您的位置:首页 > 其它

空字符串、'\0'、0与NULL的区别以及数组清零的特点分析

2013-11-25 11:34 501 查看

空字符串与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

总结:0=='\0'==NULL

[b]如果你还不信,请再看下面一个例子:

[/b]

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");
}

内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: