1.C语言是面向过程的语言,c++是面向对象的语言(也可以写面向过程的语言).c++支持多态,继承,封装,还有标准的类模板库--STL,还有单例模式,生产者-消费者模式等设计模式而这些c都不支持.
2.函数的区别
:C语言函数生成的符号,只跟函数名有关,而c++函数符号的生成,依赖函数名和参数列表,所以c不支持函数的重载.
:所以c++调用c语言函数需要extern "C" ,让编译器按照c语言的格式,生成符号.
//1.函数参数的默认值
//int fun(int a =10, int b, int c = 30) error
//int fun(int a, int b, int c = 30)
//{
// cout << a << endl;
// cout << b << endl;
// cout << c << endl;
// return 0;
//}
/*
* 1.函数参数的默认值必须从右向左依次设定. int fun(int a =10,int b,int c =300 ) error
* 2.函数参数的默认值必须在--编译阶段--知道具体的数据,
* 所以函数参数的默认值__--必须是常量--__,且函数参数的默认值___--作用域只在单文件--__.
*
*
* 3.在同一个作用域对一个函数参数的默认值只能设置一次
* int fun(int a, int b, int c = 30);
* int fun(int a, int b, int c = 30);
* error
*
*
* 4.函数参数的默认值具有就近原则
* int fun(int a, int b, int c = 30);
* int fun(int a, int b = 20, int c );
* int main()
* {
* int a = 10;
* int b = 200;
* int fun(int a, int b, int c = 300);
* fun(a,b);
*
* return 0;
* }
* 打印结果:10,200,300
*/
3.const的区别
1).在c语言中,const修饰的为常变量,可以通过访问地址的方式更改它的值,
2).但是在C++中,若是用一个常量给一个const修饰的变量赋值,会在编译期间直接进行替换,
但若是用一个变量给该const修饰的变量赋值,就会和C语言一样,为常变量.
const int a = 10;
int *p = &(int)a;
*p = 200;在.c文件中打印a的值为200,a的值改变了,但是在.cpp文件中,不允许这种操作.
4.输入输出的区别
c语言中用printf和scanf进行输入输出,这两个是标准输入输出库中的两个函数,而c++使用的是cin和cout,它俩是ostream/istream类的实例化的对象.
5.对堆内存申请释放的不同.
c语言是通过malloc和free来对堆内存进行申请和释放的,同时nalloc和free是两个函数,而c++是通过new和delete来实现的,且new和delete在c++中是运算符.
6.struct的区别.
c语言中struct用来定义结构体,且不能为空,但是C++中struct是用来定义类,可以为空,同时可以包含函数(构造,析构函数等).