库函数与API+NULL深度解析+debug宏

库函数与API:
应用程序与操作系统之间的通信是通过API实现的,当应用程序要使用系统资源时就通过API向操作系统发出申请。C库函数可以理解为是对API函数的二次封装,使应用程序更加好用。
NULL深度解析:
(viod *)0这个整体表达式表示一个指针,这个指针变量本身占4个字节,指针变量的值为0,也就是说指针变量指向0地址(实际是0地址开始的一段内存);因为内存0地址处都不是可以随便访问的,是受系统严格管控的,当强制解引用指向0地址处就会触发段错误。
代码举例:
在使用指针的时候怎么避免野指针:

int *p=NULL;   //定义指针p的同时进行初始化
p=xxx;
if(NULL != p)
{
	a=*p;     //在确认p不等于NULL时,再去解引用指针p
}
p=NULL;     //在用完之后将p再次赋值为NULL

区分’\0’、‘0’、0和NULL:
'\0’是一个转义字符,它对应的ASCII编码值是0,本质就是0;用来判断字符串有没有到头。
'0’是一个字符,它对应的ASCII编码值是48,本质就是48。
0是一个数字,本质就是0。
NULL是一个表达式,是强制类型转换为viod *类型的0,本质是0;一般用来比较一个指针是否是一个野指针。
debug宏:
程序分为DEBUG版本和RELEASE版本,DEBUG版本用于程序的调试,RELEASE版本为去除程序中的调试信息,用于最终的发布版本。
DEBUG宏实现的大致原理(代码说明):
#ifdef DEBUG
#define dbg() printf()
#else
#define dbg()
#endif
释义:如果我们要输出DEBUG版本则在条件编译语句前面加上#define DEBUG即可,这样程序中的调试语句dbg()就会被替换成printf()从而输出;如果我们 要输出RELEASE版本则丢掉#define DEBUG,则dbg()就会被替换为空,则程序所有的dbg()语句就直接消失,这样编译的程序就不会出现任何的调试代码。

发布了19 篇原创文章 · 获赞 11 · 访问量 3390

猜你喜欢

转载自blog.csdn.net/m0_46204326/article/details/104288533