空字符串、'\0'、0与NULL的区别以及数组清零的特点分析
来源:互联网 发布:成都软件开发培训班 编辑:程序博客网 时间:2024/06/14 09:05
空字符串与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");}
- 空字符串、'\0'、0与NULL的区别以及数组清零的特点分析
- 空数组与null数组的区别
- 空字符串与NULL的区别
- 空字符串与null的区别
- NULL与MySQL空字符串的区别
- 空字符串与null的区别
- 关于空字符串与NULL的区别
- 空字符串与null的区别
- NULL与MySQL空字符串的区别
- NULL与MySQL空字符串的区别
- 空字符串与NULL的区别
- 空字符串与null的区别
- NULL与MySQL空字符串的区别
- 空字符串与NULL的区别
- Java空字符串与null的区别
- Java空字符串、字符串空对象与null的区别
- 清空数组:ZeroMemory、memset 和 “={0}” 三者用于清零操作的区别
- Null、空字符串的区别
- 利用Apache Bench测试Web引擎性能
- wcf开发的六个步骤
- jquery版本之间的冲突
- 一彩仓库管理系统 v1.42
- 通过java将txt文件中的调查问卷数据导入excel
- 空字符串、'\0'、0与NULL的区别以及数组清零的特点分析
- Jenkisn + Tomcat7 + Ubuntu12.04 server
- 移植madplayer
- Libgdx专题系列:对象篇 Animation动画
- ORACLE管理优化培训内容临时记录
- Perl、PHP、ASP、JSP技术比较
- xmanager 的xshell的使用账号密码的登录方式
- Posix多线程编程学习笔记
- java.lang.IllegalStateException: Cannot load excludes configuration file "/WEB-INF/decorators.xml" a