空字符串与NULL的区别:
NULL说明:1、等价于没有任何值、是未知数。2、NULL与0、空字符串、空格都不同,NULL没有分配存储空间。3、对空值做加、减、乘、除等运算操作,结果仍为空。
还可以这么理解:
空字符串(" "):已经分配了存储空间,只是没有存储东西而已。NULL:没有分配存储空间。没有内存空间的话是不能对变量或对象进行操作的,否则会出现异常。
字符'0'的ASCII是48,空格的ASCII是32, NULL(空字符)的ASCII是0。
'\0'表示对字符'0'进行转义,转义之后则表示特殊的含义:字符串结束标志符。
例子1:
a:
void main()
{
char arr[100]={0,' ',97,' ',48,' ',49};//定义一个字符数组
if(arr[0]==NULL)//#define NULL 0(其实是系统已定义好的)
{
cout<<"打印出字符数组:"<<arr<<endl;
}
cout<<"字符数组长度为:"<<strlen(arr)<<endl;
system("PAUSE");
}
//字符数组d[ ]中的第一个元素为0,0直接作为ASCII码值保存,表示为NULL ,所以输出为空。
b:
void main()
{
char arr[100]={0,' ',97,' ',48,' ',49};
if(arr[0]=='\0')//注意此处比较的值是字符串结束符
{
cout<<"打印出字符数组:"<<arr<<endl;
}
cout<<"字符数组长度为:"<<strlen(arr)<<endl;
system("PAUSE");
}
//通过以上示例a与b:说明'\0'与0等价,都表示NULL
如果你还不信,请再看下面一个例子:
void main()
{
char arr[100];
if(0=='\0')//该处证明了0与'\0'等价
{
arr[0]=0;//将数组清零
cout<<"打印出字符数组:"<<arr<<endl;
}
cout<<"字符数组长度为:"<<strlen(arr)<<endl;
system("PAUSE");
}
例子2:
void main()
{
char arr[100]={0,' ',97,' ',48,' ',49};//定义一个数组,其中' '表示空格,空格占用一个字符
arr[0]='0';//注意此处传入的值为字符0,而不是数字0哦
cout<<"打印出字符数组:"<<arr<<endl;
cout<<"字符数组长度为:"<<strlen(arr)<<endl;
system("PAUSE");
}
//其中(97,48,49)作为ASCII码值保存到内存中,表示为(字符’a‘,字符’0‘,字符’1‘)
例子3:
void main()
{
char arr[100]=" "; //定义一个字符串,空了3格
cout<<"打印出字符数组:"<<arr<<endl;
cout<<"字符数组长度为:"<<strlen(arr)<<endl;
system("PAUSE");
}
//一个空格占一个字符哦例子4:
void main()
{
char arr[100]={'0',48};
if(arr[0]==0)//条件不成立,因为0与'0'是不一样的哦,0表示NULL,而'0'表示单字符0
{
cout<<"打印出字符数组:"<<arr<<endl;
}
cout<<"字符数组长度为:"<<strlen(arr)<<endl;
system("PAUSE");
}
例子5:
void main()
{
int a='0';//定义一个整型变量a
char b=48;//定义一个字符变量b;
cout<<a<<endl;
cout<<b<<endl;
system("PAUSE");
}
//此例说明字符0是以ASCII码值48保存到内存中的,然后赋值给了a;而48直接作为ASCII码保存到内存中,表示字符0,然后赋值给了b;
清零函数ZeroMemory的使用 :
void main()
{
char arr[100]="235a678944";
ZeroMemory(arr+2,1);//以arr为首地址,地址加1后作为新地址,然后将前5所在的位置清零
if(arr[0]==50) //字符2的ASCII码值是50;
{
cout<<"第一次测试结果如下:"<<endl;
cout<<"数组内容长度为:"<<strlen(arr)<<endl;
}
if(arr[2]==0) //测试是否将5所在的位置清零
{
cout<<"第二次测试结果如下:"<<endl;
cout<<"数组内容长度为:"<<strlen(arr)<<endl;
}
if(arr[3]==97)//97作为ASCII码表示字符'a'
{
cout<<"hello world"<<endl;
}
system("PAUSE");
}