首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

字符数组解决思路

2012-04-01 
字符数组书上先说字符串以空字符结尾,即字符串的最后一个字符是空字符,而字符数组可以不含空字符。但是后来

字符数组
书上先说字符串以空字符结尾,即字符串的最后一个字符是空字符,而字符数组可以不含空字符。但是后来又说用字符串对字符数组初始化时,编译程序以\0作为结束这个数组的标记。如果这样那么字符数组还是有空字符,这是不是矛盾的,请举个例子,谢谢了。我没学指针

[解决办法]
“可以不含空字符”,不是“不可以含空字符”。
当你用字符数组存储字符串时,可以不含空字符:
char a1[]={'C','p','p'};
也可以含空字符:
char a2[]={'C','p','p','\0'};
用字符串字面值赋值的话:
char a3[]="cpp";
这样a1的长度为3(即可以不含空字符),a2,a3的长度为4。末尾有空字符。
也就是说,当你使用字符串向字符数组赋值时‘\0’将要且必须占用一个位置。
例如:
char a4[3]="cpp";是错误的,因为你使用字符串对字符数组赋值,又没有给\0预留空位,导致空间不足。
[解决办法]
字符串:必须以'\0'结尾
字符数组:可以包含多个'\0',但是如果当做字符串处理,则实际有效字符串为第一个'\0'的签名的字符串,如果当做字符数组处理,可以处理字符数组的任何一个字符,所有的字符都可以是'\0'

假设一个字符指针指向字符串“aaaaaa”,如果通过指针下标是第三个a为'\0',则字符指针就只有三个长度,如果你的下标超过3则越界,字符数组只要不超过数组大小就不越界

热点排行