一、C/C++的区别
1、C是面向过程的语言 C++是面向对象的语言
2、输入输出方式不同
3、C++带有默认的函数、函数重载、inline内联函数,这些C++都不支持
4、C++可以实现面向对象的代码,具有强大的设计模式,如单例模式、工厂模式、观察值模式,可以更好的进行模块化设计:做到高内聚、低耦合
5、强制类型转换不同
在C语言中:使用()小括号里面加类型进行类型强转
在C++中:C++有自己的四种类型强转方式:const_cast、static_cast、reinterpret_cast和dynamic_cast
6、在动态内存管理上
C语言通过malloc和free来分配和释放内存。
C++通过new和delete来管理堆内存。
7、C++不仅支持指针还支持更安全的引用
二、new和malloc的区别
C/C++中的开辟内存
C语言中
开辟:
int *cp = (int *)malloc(sizeof(int )*n);
释放:
free(cp);
开辟二维数组:
int **parr = (int**)malloc(sizeof(int *)*n);
for(int i = 0;i < 10;i++)
{
parr[i] = (int*)malloc(sizeof(int)*n);
}
释放:
for(int i = 0;i<10;i++)
{
free(parr[i]);
}
free(parr);
C++中:
开辟:
int *p = new int (n) //(初始化)
释放:
delete p;
开辟一维数组:
int *pp = new int[10]();
delete []pp;
开辟二维数组:
int **cpparr = new int*[10];
for(int i = 0;i<10;i++)
{
cpparr[i] = new int[10];
}
释放:
for(int i = 0;i<10;i++)
{
delete[]cpparr[i];
}
delete[]cpparr;
new的底层调用malloc
new 内部调用顺序:
new ----》operator new ----》malloc ----》 构造函数