关于字符串结束符
时间:2011-12-18
来源:互联网
C/C++ code
#include<iostream> using namespace std; int main() { char str1[]="I love CHINA!",str2[20], *p1, *p2; p1=str1; p2=str2; //问题1.以下用"*p1 != '\0'"判断,循环到了str1的空格,例如I之后的空格为什么条件仍然成立?'\0'不是空格吗? //如果'\0'不是空格,也就不是ASII表中的0,那么在ASII表中会是哪个值呢? for(; *p1 != '\0'; p1++, p2++) *p2=*p1; //问题2,为什么需要以下这句话,手动填充字符串结尾标志呢?“char str1[]="I love CHINA!"”str1这样声明变量却不 //用呢? *p2='\0'; p1=str1; p2=str2; cout<<"str1:"<<p1<<endl; cout<<"str2:"<<p2<<endl; return 0; } ~
请大家分别指点以上两个问题。谢谢!
作者: chennut0802 发布时间: 2011-12-18
作者: mougaidong 发布时间: 2011-12-18
说明:空字符就是什么都没有,但是占据一个字节的空间,用来标识字符串的结束。
作者: mougaidong 发布时间: 2011-12-18
作者: slaf552985592 发布时间: 2011-12-18
2.你的循环到'\0'就结束了,'\0'没有被拷贝,所以要手工加'\0'
而char str1[]="I love CHINA!",编译器会自动加'\0'的
作者: keiy 发布时间: 2011-12-18
单步调试可以发现你的循环在'\0'时,没有拷贝给p2;
作者: mingliang1212 发布时间: 2011-12-18
作者: chennut0802 发布时间: 2011-12-18
2.你这是对字符操作,\0也是个字符,加这句是告诉输出流遇到\0就结束输出,不然会输出乱码
作者: qscool1987 发布时间: 2011-12-18
char str1[]="I love CHINA!",是因为"I love CHINA!"是常量字串,编译器会在它后面自动加'\0';然后copy到str1
作者: keiy 发布时间: 2011-12-18
谢谢各位!请问为什么“char str1[]="I love CHINA!",编译器会自动加'\0'的”,而编译器却没有为str2 自动加'\0'呢?当中有什么规则呢?谢谢。
'\0'不是在str1中,而是在"I love CHINA!"中。str1后面的'\0'只是被I love CHINA!"中的'\0'赋值过去的。
字符串常量以'\0'结束这是规定的、
作者: mingliang1212 发布时间: 2011-12-18
作者: proorck6 发布时间: 2011-12-18
热门阅读
-
office 2019专业增强版最新2021版激活秘钥/序列号/激活码推荐 附激活工具
阅读:74
-
如何安装mysql8.0
阅读:31
-
Word快速设置标题样式步骤详解
阅读:28
-
20+道必知必会的Vue面试题(附答案解析)
阅读:37
-
HTML如何制作表单
阅读:22
-
百词斩可以改天数吗?当然可以,4个步骤轻松修改天数!
阅读:31
-
ET文件格式和XLS格式文件之间如何转化?
阅读:24
-
react和vue的区别及优缺点是什么
阅读:121
-
支付宝人脸识别如何关闭?
阅读:21
-
腾讯微云怎么修改照片或视频备份路径?
阅读:28