15.void example()
{
int i;
char acNew[20] = {0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
for(i = 0; i < 10; i++)
{
acNew[i] = '0';
}
printf("%d\n", strlen(acNew));
return;
}
的输出为:
A 0 B 10 C 11 D不确定
答案:B
字符数组的大小问题,请教。
答案:3 悬赏:80 手机版
解决时间 2021-03-08 11:18
- 提问者网友:那叫心脏的地方装的都是你
- 2021-03-08 02:05
最佳答案
- 五星知识达人网友:零点过十分
- 2021-03-08 02:41
你好!!!
strlen()函数是求数组在内存中实际占有的空间大小,就是遇到'\0'就结束。
char acNew[20] = {0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
我们为数组分配可20个字节的大小,但是里面的值都是'\0',
for(i = 0; i < 10; i++)
{
acNew[i] = '0';
}
这是我们为数组赋值10个字节的大小。后面的都是‘\0’,所以输出10
strlen()函数是求数组在内存中实际占有的空间大小,就是遇到'\0'就结束。
char acNew[20] = {0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0};
我们为数组分配可20个字节的大小,但是里面的值都是'\0',
for(i = 0; i < 10; i++)
{
acNew[i] = '0';
}
这是我们为数组赋值10个字节的大小。后面的都是‘\0’,所以输出10
全部回答
- 1楼网友:英雄的欲望
- 2021-03-08 05:01
char b[]={"abc"}; // 这种形式编译器会自动给你加上一个结尾空字符'\0',所以sizeof(b) == 4
char b[]={'a','b','c'}; // 这种形式则不会,所以sizeof(b) == 3
由于第二种形式你没有为它执行结束标志,所以用b[i] != '\0'来是没有办法检测到是否达到字符串结尾的
通常会把b数组后面不属于b的内存里的垃圾内容一并打出来,直到偶然碰见了一个空字符才会结束
- 2楼网友:人類模型
- 2021-03-08 03:56
答案是B是对的
strlen是计算到第一个字符串结束符'\0'为止的字符串长度,而'\0'就是8位的00000000,因为字符类型中并没有对应的这个字符,所以在数值类型里就代表数字0。
再来看这个程序
char acNew[20] = {0, 0, 0, 0, 0, 0,
0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; //全部是0
for(i = 0; i < 10; i++)
{
acNew[i] = '0';
}
给acNew[0]~[9]赋'0',也就是ASCII码 48。
所以strlen计算到acNew[10]就碰到了'\0',所以答案就是长度10了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
推荐资讯