1.关键字数量不同
2.文件区别,即后缀名不同
c语言后缀名为.c
c++后缀名为.cpp
3.返回值不同
c语言,如果一个函数没有指定返回值类型,默认返回值类型为int,
c++,如果一个函数没有指定返回值类型,默认返回值类型为void
4.参数列表
c语言中,函数没有指定参数列表时,默认可以接收任意多个参数。
c++中,因为严格的参数类型检测,没有参数列表的函数,默认为void,不接受任何参数。
5.缺省参数
缺省参数是指声明或定义函数时为函数的参数指定一个默认值,在调用该函数时,如果没有指定实参则采用默认参数,否则使用指定的实参
c语言不支持缺省参数
c++支持缺省参数
(1)半缺省
即部分参数有缺省值(从左往右依次给出,不能隔着给,跳着给)
(2)全缺省
所有参数都有缺省值
缺省值注意:1.带缺省值的参数必须放在参数表的最后面
2.缺省参数不能同时在函数声明和函数定义中出现,只能任选其一(最好放声明)
3.缺省值必须是常量或全局变量
注意:
慎用缺省函数,否则会产生二义性
如下图,编译器不知道调用哪个,产生二义性
6.函数重载
什么叫重载,一个词有多重意思 .,即同一个作用域中声明几个功能类似的同名函数,这些同名函数的形参列表(参数个数,类型,顺序)必须不同。
c++支持函数重载。
c语言不支持重载。
函数重载的条件:
1.相同作用域
2.相同函数名称
3.函数参数列表必须不同(即参数个数,类型,顺序)
4.仅仅是返回值类型不同不能构成重载
思考:为什么c语言不支持函数重载,而c++支持?
原因:c语言对函数名的修改 _函数名
c++对函数名重命名,且把参数类型编译到名字中 ,具体看下面例子
//?Add@@YAHHH@Z //? 函数名 @ @ Y A 返回值 参数类型 @(如果无参数,此@不用写 )z
H代表int形,D代表char型,X代表void
7.c语言面向过程----------------》就是函数
c++基于面向对象(不是纯面向对象)---------------》对象指的是类的实例,将对象作为程序的基本单元,将函数(程序)和变量 (数据)封装其中,提高软件灵活性