1.关键字数量不同

2.文件区别,即后缀名不同

c语言后缀名为.c

c++后缀名为.cpp

3.返回值不同

c语言,如果一个函数没有指定返回值类型,默认返回值类型为int,

c++,如果一个函数没有指定返回值类型,默认返回值类型为void

4.参数列表

c语言中,函数没有指定参数列表时,默认可以接收任意多个参数。

c++中,因为严格的参数类型检测,没有参数列表的函数,默认为void,不接受任何参数。

5.缺省参数

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

c语言不支持缺省参数

c++初识,c++与c语言区别。及函数重载,缺省值等等


c++支持缺省参数

c++初识,c++与c语言区别。及函数重载,缺省值等等

(1)半缺省

          即部分参数有缺省值(从左往右依次给出,不能隔着给,跳着给)

(2)全缺省

          所有参数都有缺省值

缺省值注意:1.带缺省值的参数必须放在参数表的最后面

                        2.缺省参数不能同时在函数声明和函数定义中出现,只能任选其一(最好放声明)

                        3.缺省值必须是常量或全局变量

注意:

慎用缺省函数,否则会产生二义性

如下图,编译器不知道调用哪个,产生二义性

c++初识,c++与c语言区别。及函数重载,缺省值等等

 6.函数重载

什么叫重载,一个词有多重意思  .,即同一个作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数,类型,顺序)必须不同。       

c++支持函数重载。

c语言不支持重载。

函数重载的条件:

1.相同作用域     

2.相同函数名称

3.函数参数列表必须不同(即参数个数,类型,顺序)

4.仅仅是返回值类型不同不能构成重载               

思考:为什么c语言不支持函数重载,而c++支持?

 原因:c语言对函数名的修改   _函数名

             c++对函数名重命名,且把参数类型编译到名字中 ,具体看下面例子

c++初识,c++与c语言区别。及函数重载,缺省值等等 

//?[email protected]@[email protected]    //? 函数名 @ @ Y A 返回值 参数类型 @(如果无参数,此@不用写  )z
H代表int形,D代表char型,X代表void

7.c语言面向过程----------------》就是函数

c++基于面向对象(不是纯面向对象)---------------》对象指的是类的实例,将对象作为程序的基本单元,将函数(程序)和变量 (数据)封装其中,提高软件灵活性


       

相关文章: