关于C语言的简单程序题

以下程序的输出结果
main()
{ char a[7]="a0\0a0\0";int i,j;
i=sizeof(a);
j=strlen(a);
printf("%d %d\n",i,j);}

特别的请解释一下a0\0a0\0是什么东西 过程答案 谢谢

字面字符串里头 \开始的是一个转义字符。
这里\0代表的是一个空字符。

sizeof()当括号里头是数组名的时候 它计算的是整个数组的长度。所以是7。

strlen()是计算字符串的长度。c里头字符串是以空字符结尾作为字符串结束的标志

所以strlen()在遇到空字符的时候就已经认为字符串结束了。所以这里它只认为字符串的长度为2.是a和0。空字符不计算在内。

int main()
{
char a[7]="a0\0a0\0";
int i,j;
i=sizeof(a);
j=strlen(a);
printf("%d %d\n",i,j);
printf("%s",a);
system("pause");
return 0;
}

printf()输出字符数组
整个输出是
7 2
a0

可以看到空字符是字符串结尾的标志是很重要 因为很多函数是基于此来运用的。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-08-17
输出是 7 2

sizeof运算符求的是所占的字节数,你的程序中已给分组a分配了7个字节,所以i=7;而strlen是一个字符串函数,它表示以'0'结束的字符串的前面的字符的个数,它遇到'\0'就结束,所以这里它只统计了a,0两个字符,即得出的长度为2.

"a0\0a0\0"只是一个字符串,其中\表示转译的意思,它要和它后面的字符一起看作一个字符。如\n是换行,\r是回车等

具体可以参见C语言的库。本回答被提问者采纳
第2个回答  2008-08-17
输出结果是7 2

"a0\0a0\0"是一个字符串 它由'a'、'0'、'\0'、'a'、'0'、'\0'、'\0'七个字符组成
i=sizeof(a); 计算的是数组所占的存储单元的大小 应该是7个字节 因为定义char a[7]的a后面的大小是7
j=strlen(a); 是计算字符串的长度,计算字符串的长度是 遇到空字符为止 也就是ascii码为0的代码这里面的第三个字符就是空字符 所以字符串的长度是2
第3个回答  2008-08-17
\0是空字符;strlen是返回字符串长度,遇到第一个\0为止,所以会输出2,即a,0两个字符;

sizeof是返回数组内元素的个数,因为定义了char a[7]即申请了7个内存空间,所以个数应该为7(不论有没有初始化);
第4个回答  2008-08-17
\0就是字符串结束标记

sizeof 返回数组a的占用的空间,所以i的值为7
strlen返回字符串长度,遇到字符串结束标记为止,所以j的值为2
输出结果7 2
相似回答