永发信息网

字符数组的大小问题,请教。

答案:3  悬赏:80  手机版
解决时间 2021-03-08 11:18
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
最佳答案
你好!!!
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
全部回答
char b[]={"abc"}; // 这种形式编译器会自动给你加上一个结尾空字符'\0',所以sizeof(b) == 4 char b[]={'a','b','c'}; // 这种形式则不会,所以sizeof(b) == 3 由于第二种形式你没有为它执行结束标志,所以用b[i] != '\0'来是没有办法检测到是否达到字符串结尾的 通常会把b数组后面不属于b的内存里的垃圾内容一并打出来,直到偶然碰见了一个空字符才会结束
答案是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了
我要举报
如以上问答信息为低俗、色情、不良、暴力、侵权、涉及违法等信息,可以点下面链接进行举报!
大家都在看
口袋妖怪白金花蕊遗迹
0和x2-(a2+a)x+a3<0的解集分别为A和B(1)若A∩
ANSYS中无法合并压缩重复节点和单元怎么办
同一个牌子的相机会因为档次不同而拍出来的颜
farcry primal要不要和uplay放在一个文件夹
小淘气童装店地址在什么地方,想过去办事
懒财猫股东有哪些,背景怎么样
treasury STRIP
国家电投集团河北电力有限公司怎么样?
北京北站到八达岭长城坐火车怎么走
德国马牌轮胎销售地址在什么地方,想过去办事
古希腊神庙的柱子粗壮而开间狭窄,中国宫殿建
学生成为学习活动的主体的翻译是:什么意思
道可道是什么意思
中国银行天津华昌街支行在什么地方啊,我要过
推荐资讯
北京同心思纬贸易有限责任公司怎么样?
毛俊周小吃店这个地址在什么地方,我要处理点
唇腭裂的发生与遗传因素有关,属于A.常染色体
雷电口地址在什么地方,想过去办事
太阳对行星的引力,所以行星绕太阳运转而不是
王子·公主儿童摄影会馆地址在哪,我要去那里
梦幻西游特殊账户身上放几亿现金在线或下线会
潘家堤地址在什么地方,想过去办事
关于传染的概念,下列哪项是正确的A.感染后是
dongil钢琴报价全新的2016年报价
七一中学教工社区怎么去啊,有知道地址的么
江苏省特种设备安全监督检验研究院南通分院如
正方形一边上任一点到这个正方形两条对角线的
阴历怎么看 ?