富贵是那个小说:c语言问题

来源:百度文库 编辑:中科新闻网 时间:2024/04/29 08:14:16
int i;
char a[7]="a0\0a0\0";
i=sizeof(a);
i的值是多少?

请说明理由!!!

前面的答案都不完全正确。
i的值是7,sizeof()对数组计算的时候返回整个数组的字节长度。最开始a就已经分配了7字节的空间(char a[7]),所以即使是char a[7]="a",结果也是7。
如果写作char a[]="a0\0a0\0",结果也是7。因为右边所赋的字符个数是6,加上1个空字符('\0'),总共是7个字符,即数组维数为7,每个字符占用字节数为1,即7*1=7字节。
对于strlen()函数来说,两者返回结果都是2,因为字符串长度计算的时候在'\0'处就会截断,但是对于sizeof()来说,并不会这样。

是7,sizeof()返回的是这个字符串所占用的存储空间,不是字符串的长度,这个数组由7个字符组成,而每个字符占一个字节,所以结果是7.若是i=strlen(a),则返回值是2,因为这个函数返回的是字符串的长度,遇到'\0'就算这个字符串结束了

是2,因为sizeof遇到"\0"结束

是2,输出时遇到“\0”结束输出,当然在sizeof中也是这样了。特地查了谭的书……