当前位置:首页 » 编程语言 » c语言中有泛型的概念么
扩展阅读
webinf下怎么引入js 2023-08-31 21:54:13
堡垒机怎么打开web 2023-08-31 21:54:11

c语言中有泛型的概念么

发布时间: 2023-01-31 09:42:48

① 怎样在 c语言 实现 C#和C++里面的 泛型 特

何必呢,你要真用一个不支持泛型的语言来实现泛型其难度是难以想象的,有什么特殊原因必须用C且必须用泛型么?
对于特定应用,泛型没有什么用。泛型主要用于写通用库的

② C语言中++c与c++有什么区别

++c 是先赋值后使用,c++是先使用后赋值。
对于单纯的复制语句,两个没差别。对于复合语句,就有差别了。比如:
i=3;
对于 while(++i<4),i先加1,用i=4作判断,
结果是假,跳过程序体。
对于 while(i++<4),先取i=3作判断,结果是真,进入程序体,然后i加1,用i=4,在程序体里作运算。

③ c中泛型什么时候替换

c语言中方法被声明时。
在c语言中如果方法被声明也就是被定义时作为泛型类或者泛型接口的一部分,程序员就可以使用他们自己的泛型类型来替换原有的类型。
泛型的概念代表了对类型的抽象。它是一个非常强大的概念,它允许开发抽象算法和数据结构,并提供实体类型以供后续操作。

④ C语言 泛型动态数组

泛型动态数组

附上源码: 泛型动态数组源码
https://github.com/chenfanfang/data_structure

array.h 头文件

array.c 函数实现

测试用例1

测试用例2

⑤ C++相对C的主要特点和发展

简单地说,C++和C的主要区别在于,C是面向过程的,而C++是面向对象的,C++主要比C多了继承,多态,模板等特性;在发展方向上,C++倾向于用来开发一些大型的软件,而C倾向于用来开发和硬件有关同时又要求效率的过程式软件开发,在使用人数上,目前C占绝对的优势。

下面是详细的介绍:
1.C++和C的关系:
C语言之所以要起名为“C”,是因为它是主要参考那个时候的一门叫B的语言,它的设计者认为C语言是B语言的进步,所以就起名为C语言;但是B语言并不是因为之前还有个A语言,而是B语言的作者为了纪念他的妻子,他的妻子名字的第一个字母是B; 当C语言发展到顶峰的时刻,出现了一个版本叫C with Class,那就是C++最早的版本,在C语言中增加class关键字和类,那个时候有很多版本的C都希望在C语言中增加类的概念;后来C标准委员会决定为这个版本的C起个新的名字,那个时候征集了很多种名字,最后采纳了其中一个人的意见,以C语言中的++运算符来体现它是C语言的进步,故而叫C++,成立了C++标准委员会。

2.C++的发展和特点:
• C++设计成静态类型、和C同样高效且可移植的多用途程序设计语言。
• C++设计成直接的和广泛的支援多种程序设计风格(程序化程序设计、资料抽象化、面向对 象程序设计、泛型程序设计)。
• C++设计成给程序设计者更多的选择,即使可能导致程序设计者选择错误。
• C++设计成尽可能与C兼容,籍此提供一个从C到C++的平滑过渡。
• C++避免平台限定或没有普遍用途的特性。
• C++不使用会带来额外开销的特性。
• C++设计成无需复杂的程序设计环境。
出于保证语言的简洁和运行高效等方面的考虑,C++的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,C++之父的《C++语言的设计和演化》 里做了详尽的陈述。

3..两者的效率差别:
C++与C的效率往往相差在正负5%之间。所以有人认为在大多数场合C++ 完全可以取代C语言(然而我们在单片机等需要谨慎利用空间、直接操作硬件的地方还是要使用C语言)。

4.C是C++的子集:
C++包括:
1、C子语言。C++支持C语言的几乎全部功能,在语法上与C语言仅有极微妙的差别(如括号表达式的左右值性,具体请参考C++标准文献)。
2、面向对象的C++(Objective C++)。C++语言原本不具备面向对象的设计功能,然而随着面向对象编程的概念的提出以及如Java等语言的发展成熟,C++语言也开发出了支持面向对象功能的版本,现在编程者常用的VC++就是一种面向对象的语言。
3、泛型编程语言。C++强大(但容易失控的)模板功能使它能在编译期完成许多工作,从而大大提高运行期效率。
4、STL(C++标准模板库,Standard Template Library)。随着STL的不断发展,它已经逐渐成为C++程序设计中不可或缺的部分,其效率可能比一般的native代码低些,但是其安全性与规范性使它大受欢迎。
此外,包含在TR1等中的C++0x将实现的新功能在开发和测试中。

⑥ 怎样在 C语言 实现 C#和C++里面的 泛型 特性

用void *跟length参数来操作数据,达到泛型的目的!

⑦ 什么是C语言C++C#E语言还有汇编

把c++学透了?那这些呢?
1、泛型
2、模版
简单点的学习历程:

"学习完C语言和C++"
这两门没一年半载年, 你可能连语法都玩不熟,
况且会语法和会运用更是两个概念.

从发展趋势看, 这两门语言越来越低层,
所以对数据结构和算法的要求更高, 数学扮演的角色也更重要.

你如果对这方面不感兴趣, 趁早换java, C#等,
反之, 我建议你, 数据结构和算法要学扎实,
还要掌握些SDK编程, 了解系统内部的运作方式,
还有COM, 汇编也建议研究下.

总之, 越底层, 你得到的辅助越少, 需要自己实现的东西越多,
对程序员的素质要求越高, 当然如果你实力足够, 待遇自然
也比应用程序员更高, 努力吧.

补充一下我学的知识吧:
1,从最底层的说起吧,我是学自动化的,对于底层的单片机,总线之类的比较熟悉,所以学习计算机,在看计算机体系结构方面的东西就比较顺畅。
2,汇编语言,是必须要学习的,这个是了解CPU和电脑最好的渠道。
3,操作系统的知识,整个让你知道,在我们一般人写程序的下面还有一个强大的操作系统平台,提供给我们软件支持。
4,编程语言,我个人学习的是C,C++这么一个思路。个人感觉C++比C要复杂很多,特别是我上面提到的范型和模板之类的,特别复杂,现在也是有空才看看相关的书。
5,平台相关的知识了,嵌入式系统方面的东西了,比如搞windows开发,我用的是MFC和VC开发的,当然如果你是用Linux开发的,可能有另外更多的选择。
6,设计模式,算法问题,这个东西非常重要,也就是程序的设计思路和框架问题,你有空,可以学习UML之类的东西。

7,最后一个,就是可以常常去各个论坛之类和人交流,一方面可以补充自己的不足,一方面帮助别人的同时,自己也有成长。

⑧ 纯C语言实现,泛型数组(静态数组的方式),关键是在分配内存时候,如何传递类型参数。(可惜我没有分)

不要分,尽管讨论!在32位机里指针都是4字节。但为了书写标准化和移植,还是用sizeof(ptype)*n作为malloc的参数为好。其中n是需要分配多少个ptype型指针的个数。

⑨ 为什么说C语言是结构化的语言

虽然从严格的学术观点上看,C语言是块结构(b l o c k - s t r u c t u r e d)语言,但是它还是常被称为结构化语言。这是因为它在结构上类似于A L G O L、P a s c a l和M o d u l a - 2(从技术上讲,块结构语言允许在过程和函数中定义过程或函数。用这种方法,全局和局部的概念可以通过“作用域”规则加以扩展,“作用域”管理变量和过程的“可见性”。因为C语言不允许在函数中定义函数,所以不能称之为通常意义上的块结构语言)。

结构化语言的显着特征是代码和数据的分离。这种语言能够把执行某个特殊任务的指令和数据从程序的其余部分分离出去、隐藏起来。获得隔离的一个方法是调用使用局部(临时)变量的子程序。通过使用局部变量,我们能够写出对程序其它部分没有副作用的子程序。这使得编写共享代码段的程序变得十分简单。如果开发了一些分离很好的函数,在引用时我们仅需要知道函数做什么,不必知道它如何做。切记:过度使用全局变量(可以被全部程序访问的变量)会由于意外的副作用而在程序中引入错误。

结构化语言比非结构化语言更易于程序设计,用结构化语言编写的程序的清晰性使得它们更易于维护。这已是人们普遍接受的观点了。C语言的主要结构成分是函数C的独立子程序。

在C语言中,函数是一种构件(程序块),是完成程序功能的基本构件。函数允许一个程序的诸任务被分别定义和编码,使程序模块化。可以确信,一个好的函数不仅能正确工作且不会对程序的其它部分产生副作用。

⑩ STL文件导入到CARTIL

导入步骤:
第1步:首先运行Sketchup,然后打开所需文件;
第2步:单击文件file-导出export-3D模型;
第3步:在文件格式中选择“3ds”;
第4步:然后单击导出export,单击确定“OK”;
第5步:然后打开软件Meshlab,接着单击打开图标1,然后选择刚才导出的3ds格式文件;
第6步:单击打开;
第7步:单击保存图标1,然后选择文件格式stl;
第8步:其他选项默认,然后单击确定;
第9步:打开CARTIL软件,然后单击文件-打开(快捷键ctrl+o),选择刚才保存的stl文件,单击确定。
标准模板库系(stl)由Alexander Stepanov创造于1979年前后,这也正是比雅尼·斯特劳斯特鲁普创造C++的年代。虽然Musser于1971年开始即在计算机几何领域发展并倡导某些泛型程序设计观念,但早期并没有任何编程语言支持泛型程序设计。第一个支持泛型概念的语言是Ada。Alex和Musser曾于1987开发出一套相关的Ada library。标准模板库设计人Stepanov早期从事教育工作,1970年代研究泛型程序设计,那时他与其同事一起在GE公司开发出一个新的程序语言—Tecton。1983年,Stepanov先生转至Polytechnic大学教书,继续研究泛型程序设计,同时写了许多Scheme的程序,应用在graph与network的算法上,1985年又转至GE公司专门教授高阶程序设计,并将graph与network的Scheme程序,改用Ada写,用了Ada以后,他发现到一个动态(dynamically)类型的程序(如Scheme)与强制(strongly)类型的程序(如Ada)有多么的不同。在动态类型的程序中,所有类型都可以自由的转换成别的类型,而强制类型的程序却不能。但是,强制类型在出错时较容易发现程序错误。1989年Stepanov先生转至HP公司运行开发泛型程序库的工作。此时,他已经认识C语言中指针(pointer)的威力,他表示一个程序员只要有些许硬件知识,就很容易接受C语言中指针的观念,同时也了解到C语言的所有数据结构均可以指针间接表示,这点是C与Ada、Scheme的最大不同。Stepanov并认为,虽然C++中的继承功能可以表示泛型设计,但终究有个限制。虽然可以在基础类型(superclass)定义算法和接口,但不可能要求所有对象皆是继承这些,而且庞大的继承体系将减低虚拟(virtual)函数的运行效率,这便违反的前面所说的“效率”原则。到了C++模板观念,Stepanov参加了许多有关的研讨会,与C++之父Bjarne讨论模板的设计细节。如,Stepanov认为C++的函数模板(function template)应该像Ada一样,在声明其函数原型后,应该显式的声明一个函数模板之实例(instance);Bjarne则不然,他认为可以通过C++的重载(overloading)功能来表达。