new/delete是运算符,使用时,不用加头文件;malloc/free是标准 C库函数,需要加头文件。
- new的返回值是特定数据类型,不需要强制类型转换;malloc的返回值是void*类型,需要强制类型转换。
- new申请内存时,已经确定了内存中的数据类型,会做数据类型检查。
- new只需确定元素类型和个数;malloc需要手动计算申请内存大小。
- free的入参是内存的首地址;delete释放数组时必须加 [ ] 。
- new/delete一个对象时会分别调用该对象的构造函数/析构函数;malloc/free没有这个功能。
int *p=new int; delete p;int *q=new [5];delete [] q; 如何看待内联函数、宏定义 ?
- 内联函数是在程序编译过程中替换;宏是在预处理阶段替换。
- 内联函数会进行类型检查;宏不会进行类型检查。
- inline内联函数只是一个建议,不一定成功。
- 指针占4字节内存空间;引用不占用内存空间,引用和被引用变量共同使用同一块内存空间。
- 指针可以改变指向;引用一旦初始化完成不能变成别的变量的引用。
- 指针可以不被初始化;引用必须被初始化。
- 可以有void类型的指针;不能有void类型的引用。
- 不能声明引用数组;可以声明指针数组。
- 可以有二级指针;不能有二级引用。
int b=0;int & a=b;
什么是函数重载?
函数名相同,参数个数或参数类型或顺序不同,与返回值无关。
当声明一个类时,系统默认分配哪些函数 ?
- 默认构造函数
- 默认析构函数
- 拷贝构造函数
- 赋值运算符
- 地址运算符
怎么看待类class和结构体struct ?
struct定义类时,所有成员默认属性为public;class定义类时,所有成员默认属性为private。
linux下我们运行一个.c文件有哪些步骤?
1.预处理:(源文件)gcc -e test .c -o test.i
2. 编译:(预编译文件)gcc -s test.i -o test.s
3. 汇编:(目标文件)gcc -c tets.c -o test.o
4. 链接:(链接文件)gcc test.o -o test
new/delete是运算符,使用时,不用加头文件;malloc/free是标准 C库函数,需要加头文件。
- new的返回值是特定数据类型,不需要强制类型转换;malloc的返回值是void*类型,需要强制类型转换。
- new申请内存时,已经确定了内存中的数据类型,会做数据类型检查。
- new只需确定元素类型和个数;malloc需要手动计算申请内存大小。
- free的入参是内存的首地址;delete释放数组时必须加 [ ] 。
- new/delete一个对象时会分别调用该对象的构造函数/析构函数;malloc/free没有这个功能。
int *p=new int; delete p;int *q=new [5];delete [] q; 如何看待内联函数、宏定义 ?
- 内联函数是在程序编译过程中替换;宏是在预处理阶段替换。
- 内联函数会进行类型检查;宏不会进行类型检查。
- inline内联函数只是一个建议,不一定成功。
- 指针占4字节内存空间;引用不占用内存空间,引用和被引用变量共同使用同一块内存空间。
- 指针可以改变指向;引用一旦初始化完成不能变成别的变量的引用。
- 指针可以不被初始化;引用必须被初始化。
- 可以有void类型的指针;不能有void类型的引用。
- 不能声明引用数组;可以声明指针数组。
- 可以有二级指针;不能有二级引用。
int b=0;int & a=b;
什么是函数重载?
函数名相同,参数个数或参数类型或顺序不同,与返回值无关。
当声明一个类时,系统默认分配哪些函数 ?
- 默认构造函数
- 默认析构函数
- 拷贝构造函数
- 赋值运算符
- 地址运算符
怎么看待类class和结构体struct ?
struct定义类时,所有成员默认属性为public;class定义类时,所有成员默认属性为private。
linux下我们运行一个.c文件有哪些步骤?
1.预处理:(源文件)gcc -e test .c -o test.i
2. 编译:(预编译文件)gcc -s test.i -o test.s
3. 汇编:(目标文件)gcc -c tets.c -o test.o
4. 链接:(链接文件)gcc test.o -o test
举报