C语言,数组的长度!!
答案:4 信息版本:手机版
解决时间 2021-05-15 21:57
已解决
2021-05-15 08:18
main()
{char x[]=”STRING”;
x[0」=0;x[1]=’\0’;x[2」=’0’;
printf(”%d %d”,sizeof(x),strlen(x));
}
答案为什么是 7 , 0?
还有,char a[]={"abcd"},那么它的长度和占用内存分别是多少?
两道问题啊~~
最佳答案
2021-05-15 08:31
sizeof(x)求的是数组实际占的字节数strlen(x)求实际有效字符的个数,因为x[0]=0,所以系统认为一个字符也没有
char a[]={"abcd"},那么它的长度和占用内存分别是5和4
全部回答
1楼
2021-05-15 10:47
sizeof(x)=5 和strlen(x)= 4 想知道详细解答吗
2楼
2021-05-15 09:57
1.因为 "123456"后面有个默认的 '\0' 结束符,所以是7个字节长度
x[0]='S' x[1]='T' x[2]='R' x[3]='I' x[4]='N' x[5]='G' x[6]='\0'
所以0-6是7个字节长度,x[6]='\0' 是系统自动加上的结束符。
2.字符长度是0,因为你强制给x[0]=0,0='\0' 是完全相等的,所以直接就结束了
系统就以为没有字符了,所以是0,而‘0’是字符0,ascii值是48
x[2]='0'相当于x[2]=48,而x[0]=0相当于x[0]='\0';
3楼
2021-05-15 09:50
你的两个数组的长度都是 80。如果不是动态开辟的数组,你声明的时候给多少长度就是多少长度。
第二个数组的长度是2?估计你使用 strlen 函数求吧? strlen只能求字符串长度,没办法求数组长度。strlen 是用 '\0' 来判断字符串的结束标志的,而你第二个数组中放置了几个'\0' (ASCII码为0,),所以得到的长度是 2。将第二个数组改为char m[80]={'1','1','0','1','0','0','0'}; 用 strlen 求得结果为 7。
求数组长度的正确方法:
sizeof(mes)/sizeof(int);
sizeof(mes)/sizeof(char)
我要举报
如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!
大家都在看
推荐资讯