最近准备c++面试掏出一堆视频,总结一些常见c++面试题,日常打卡。
一.预处理和宏定义的使用
1.预处理
//考点 :#ifdef #else #endif
//例子:
#include<iostream>
uing namespace std;
#define DEBUG //预处理常量
int main(){
#ifdef DEBUG;//判断是否定义了DEBUG
cout>>Yes>>endl;
#endif
return 0;
}
2.宏定义
//考点:宏定义函数
#include<iostream>
using namespace std;
#define fun(x)(x*x)
int main(){
int a,b = 3;
a = fun(b + 2);
cout>>a>>endl;
return 0;
}
注:a=3+2*3+2=11
要实现a=(3+2)*(3+2)=25 此时可以把宏定义改成#define fun(x)(x)*(x)
二、动态分配内存
1.new动态分配内存,delete释放动态申请的内存
//类型名 *指针变量 = new 类型名
int *p = new int;
//类型名 *指针变量 = new 类型名[元素个数]
int i = 1;
int *p = new int[i];
注:delete释放完之后 为了防止野指针 在其后加上 指针名 = NULL;
2.malloc和free动态申请释放内存
//malloc函数原型
void *malloc(unsigned int num_bytes);
//free函数原型
void free(void *p)
//常见用法
char *P = NULL;
P = (char *)malloc(10 * sizeof(char));
free(P);
P = NULL;
常见用法:https://www.cnblogs.com/shiweihappy/p/4246372.html
3.new与malloc的区别