c语言字符串数组所占内存长度

chara[5]sizeof(a[5])=7对吗?为什么如果求数组所占字节数应该是7吗?... char a[5]
sizeof(a[5])=7
对吗?为什么
如果求数组所占字节数应该是7吗?
展开
 我来答
w3180121
推荐于2017-10-04 · 知道合伙人数码行家
w3180121
知道合伙人数码行家
采纳数:793 获赞数:2403
单片机 C语言 电脑 液晶 没有 证书 我们只是一个团队

向TA提问 私信TA
展开全部
使用strlen() 函数来计算
strlen() 函数计算的是字符串的实际长度,遇到第一个'\0'结束。如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到'\0'停止。而sizeof返回的是变量声明后所占的内存数,不是实际长度,

strlen 需要\0结束符来计算长度,
所以它会以p数组内存为起点, 一直往后在连续的内存中找, 它是不管越界问题的,
直到找到一个\0,才认为这个串结束了, 然后返回长度.
具体所占内存大小, 完全是看内存中的数据是多少
vantermonde
2011-06-13
知道答主
回答量:12
采纳率:0%
帮助的人:0
展开全部
sizeof(a[5])是数组中第6个元素的长度,应该是1。但是你的数组长度为5,最后一个元素是a[4]哦! 要求整个数组的长度直接用数组名就好了,相当于直接把数组的首地址传给函数strlen, strlen(a)就是求得的整个数组占用的字节长度,而且应该为5而不是7。因为每个char类型的变量只占一个字节! 希望可以帮到你,不会的可以问我。希望采纳嘿嘿
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
shuhenshuhen
2011-06-12 · 超过15用户采纳过TA的回答
知道答主
回答量:48
采纳率:0%
帮助的人:39.5万
展开全部
这个不对,a[5]是数组a中的一个元素,相当于一个char 类型的变量,sizeof(a[5])=1.要想得到数组a的大小,应该用sizeof(a[5]),得到的值为5。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
沐晨长孙振国
2019-11-13 · TA获得超过3882个赞
知道大有可为答主
回答量:3120
采纳率:27%
帮助的人:208万
展开全部
a后面加个‘\0’,由于b是逐个赋值,而且最后元素不是'\0',
所以b后面没有'\0';
数组长度是指数组元素个数;
在a中有6个元素,
b中有5个;
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
hai994589
2011-06-14 · 超过21用户采纳过TA的回答
知道答主
回答量:69
采纳率:0%
帮助的人:0
展开全部
sizeof(a) / sizeof(a[0])
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式