39.1.C语言中的NULL
(1)从指针角度理解NULL的本质;int_*p;(若p是1个函数内的局部变量,则p的值是随机的,即p是1个野指针);int_*p=NULL;(若p是1个局部变量,则p的值是(void_*)0,实际就是0,意思是指针p指向内存的0地址处,则p不是野指针)(见图1)。
(2)在大部分的CPU中,内存的0地址处是操作系统严密管控区域,所以应用程序不能随便访问;野指针指向了该区域可以保证野指针不会造成误伤,若程序无意识的解引用指向0地址处的野指针则会触发段错误,则可以提示你帮助你找到程序中的错误。
(3)NULL的第1个作用就是让野指针指向0地址处安全;NULL的第2个作用就是作为1个特殊标记在标准的指针使用步骤起作用(见图2)。
(4)’\0’(转义字符,对应的ASCII编码值是0);’0’(1个字符,对应的ASCII编码值是48);0(1个数字,就是数字0);NULL(1个表达式,强制类型转换为void_*类型的0)。
(5)’\0’用法是C语言字符串的结尾标志,用来比较字符串中的字符以判断字符串有没有到头;’0’是字符0,对应0字符的ASCII编码,用来获取0的ASCII码值;0是数字,用来比较某个int类型的数字是否等于0;NULL是1个表达式,用来比较指针是否是1个野指针。
39.2.运算中的临时匿名变量
(1)C语言-高级语言,汇编语言-低级语言ÿ