C/C++区别是什么(c,C++,别是,编程语言)

时间:2024-04-30 14:17:05 作者 : 石家庄SEO 分类 : 编程语言
  • TAG :

    C%2FC%2B%2B%E5%8C%BA%E5%88%AB%E6%98%AF%E4%BB%80%E4%B9%88

C/C++应该从关键字的个数、源文件、变量定义或声明位置、函数、缺省参数几个方面进行比较,如果你总是搞混,看了这篇文章会帮助到你。

C/C++从以下几个方面的比较:

关键字的个数:
C语言:C99版本,32个关键字
C++:C98版本,63个关键字

源文件:
C源文件后缀.c,C++源文件后缀.cpp,如果在创建源文件时什么都不给,则默认是.cpp

变量定义或声明位置:
C语言必须在第一行定义;C++不做要求

函数:
(1)返回值
C语言中,如果一个函数没有指定返回值类型,默认返回int型;
C++中,对于函数返回值的检测更加严格,如果一个函数没有返回值,则必须指定为void.
(2)参数列表
C语言中,如果函数没有指定参数列表时,默认可以接受任意多个参数;但在C++中,因为严格的参数类型检测,没有参数列表的函数,默认为void,不接受任何参数。

缺省参数:
缺省参数是声明或定义函数时为函数的参数指定一个默认值。在调用该函数时,如果没有指定实参则采用该默认值,否则,使用指定的实参。

(1)全缺省参数:将所有参数的缺省值全部给出//代码

(2)半缺省参数:规定,缺省值只能从右往左传//代码

注意:

C语言不支持缺省参数

函数重载指在同一作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(个数、类型、类型的次序)必须不同。

仅仅返回值的类型不同,是不能构成函数重载的。

C++支持函数重载的原因:VS编辑器在底层将函数参数的类型编译到函数的名字中,因此原函数名就被换成了另外一个独一无二的名字。

C语言不支持函数重载的原因:所生成的新的函数名还是相同的。只是在函数名前加了_

C++中将函数按C语言风格编译,只需在函数前加 extern “c”

C语言中函数有两种传参方式:传值传址

传值:在函数调用过程中会生成一份临时变量用形参代替,最终把实参的值传递给新分配的临时变量即形参。
传值优点:函数的副作用不会影响到外部实参。
传值缺点:不能通过修改参数来改变外部实参。

传指:在函数调用过程中会生成一份临时变量用形参代替,最终把实参的地址传递给新分配的临时变量。
传指优点:节省空间,效率高,改变参数可以改变外部实参。
传指缺点:指针不安全,函数的副作用会影响外部实参。

C++中

引用:
(1)概念:引用不是新定义一个变量,而是给已存在变量取了一个别名,编译器不会为引用变量开辟内存空间,它和它的引用变量共用同一块内存空间。
(2)形式:类型& 引用变量名=引用实体

注:

(3)常引用

(4)数组引用

b.用引用变量作为函数的返回值 //代码

引用和指针有什么区别?

相同点:

列表内容

底层的处理方式相同,都是按照指针的方式实现的。

引用变量在底层所对应指针的类型:

引用变量实体的类型* const

不同点:

引用必须要进行初始化;指针不作要求。

普通类型的指针可以在任何时候指向任何一个同类型对象;而引用一旦引用一个实体,就不能再引用其他实体。

指针++:指向下一个地址; 引用++:给数值++。

在sizeof中含义不同:引用结果为引用类型的大小;而指针始终是 地址*空间所占字节个数。

指针需要手动寻址;而引用通过编译器寻址。

引用比指针使用起来相对安全。

在C++中,变量、函数和类都是大量存在的,这些变量、函数和类的名称将都存在于全局命名空间中,会导致很多冲突,使用命名空间的目的是对标识符的名称进行本地化,以避免命名冲突或名字污染。

命名空间的定义

说明
a.一个命名空间就定义了一个新的作用域,命名空间中的所有内容都局限于该命名空间中。
b.没有名称的命名空间只能在当前文件中使用,它里面定义的变量相当于工程里面的全局变量。

命名空间的使用

//代码

本文:C/C++区别是什么的详细内容,希望对您有所帮助,信息来源于网络。
上一篇:Thinking in C++重点知识有哪些下一篇:

2 人围观 / 0 条评论 ↓快速评论↓

(必须)

(必须,保密)

阿狸1 阿狸2 阿狸3 阿狸4 阿狸5 阿狸6 阿狸7 阿狸8 阿狸9 阿狸10 阿狸11 阿狸12 阿狸13 阿狸14 阿狸15 阿狸16 阿狸17 阿狸18