c 语言char数组长度,C语言,数组的长度!!

"博客探讨了C语言中数组长度与字符串长度的区别。在示例中,数组`x`初始化为""STRING"",其`sizeof(x)`返回7,表示占用7个字节,而`strlen(x)`因`x[0]=0`被设置为0。另外,数组`chara[]={"abcd"}
摘要由CSDN通过智能技术生成

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)

我要举报

如果感觉以上信息为低俗/不良/侵权的信息,可以点下面链接进行举报,我们会做出相应处理,感谢你的支持!

大家都在看

推荐资讯

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值