c语言字符串数组所占内存长度
5个回答
推荐于2017-10-04 · 知道合伙人数码行家
关注
展开全部
使用strlen() 函数来计算
strlen() 函数计算的是字符串的实际长度,遇到第一个'\0'结束。如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到'\0'停止。而sizeof返回的是变量声明后所占的内存数,不是实际长度,
strlen 需要\0结束符来计算长度,
所以它会以p数组内存为起点, 一直往后在连续的内存中找, 它是不管越界问题的,
直到找到一个\0,才认为这个串结束了, 然后返回长度.
具体所占内存大小, 完全是看内存中的数据是多少
strlen() 函数计算的是字符串的实际长度,遇到第一个'\0'结束。如果你只定义没有给它赋初值,这个结果是不定的,它会从首地址一直找下去,直到遇到'\0'停止。而sizeof返回的是变量声明后所占的内存数,不是实际长度,
strlen 需要\0结束符来计算长度,
所以它会以p数组内存为起点, 一直往后在连续的内存中找, 它是不管越界问题的,
直到找到一个\0,才认为这个串结束了, 然后返回长度.
具体所占内存大小, 完全是看内存中的数据是多少
展开全部
sizeof(a[5])是数组中第6个元素的长度,应该是1。但是你的数组长度为5,最后一个元素是a[4]哦! 要求整个数组的长度直接用数组名就好了,相当于直接把数组的首地址传给函数strlen, strlen(a)就是求得的整个数组占用的字节长度,而且应该为5而不是7。因为每个char类型的变量只占一个字节! 希望可以帮到你,不会的可以问我。希望采纳嘿嘿
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这个不对,a[5]是数组a中的一个元素,相当于一个char 类型的变量,sizeof(a[5])=1.要想得到数组a的大小,应该用sizeof(a[5]),得到的值为5。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
a后面加个‘\0’,由于b是逐个赋值,而且最后元素不是'\0',
所以b后面没有'\0';
数组长度是指数组元素个数;
在a中有6个元素,
b中有5个;
所以b后面没有'\0';
数组长度是指数组元素个数;
在a中有6个元素,
b中有5个;
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
sizeof(a) / sizeof(a[0])
本回答被提问者采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询