一 空字符串、NULL、空格串
string str1=""://空字符串 str1.length()=0,分配内存
string str2=NULL;//NULL,不分配内存
string str3=" "//空格串 str2.length()=1,分配内存
二NULL、0、‘\0’
C中,NULL、0、‘\0’的值都是一样的,但是实质确实有所差别的。NULL用于指针和对象,0是指数值、‘\0’用于字符串的结束。
大多数系统中,都将0作为不被使用的地址,所以有#define NULL 0。系统不同时NULL并非总和0等同,NULL仅仅代表空值,也就是只想一个不被使用的地址,这时不被使用的地址不用0表示。
三空指针、空指针常量
1空指针:指向空地址的指针,不指向任何实际对象。
空指针类型 *p=NULL;
int *p=NULL;
NULL是一个标准规定的宏定义,用来表示空指针常量
2空指针常量:一个表示0值的整数常量,叫做空指针常量
0、0L、3-3\(void*)0都是整数常量表达式(integer constant expression)ps:(char*)不是空指针常量,只是一个空指针。
一般的C系统选择(void*)0或者0作为空指针常量。
四野指针
野指针:野指针指向一个已经删除的对象或者未申请访问受限内存区域的指针。
和空指针不同的是野指针无法通过是否为NULL避免。
任何指针变量刚被创建时不会自动成为NULL指针,它的缺省值是随机的,它会乱指一气。所以,指针变量在创建的同时应当被初始化,要么将指针设置为NULL,要么让它指向合法的内存
网友评论