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

char a[5]
sizeof(a[5])=7
对吗?为什么
如果求数组所占字节数应该是7吗?

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

strlen 需要\0结束符来计算长度,
所以它会以p数组内存为起点, 一直往后在连续的内存中找, 它是不管越界问题的,
直到找到一个\0,才认为这个串结束了, 然后返回长度.
具体所占内存大小, 完全是看内存中的数据是多少
温馨提示:答案为网友推荐,仅供参考
第1个回答  2011-06-13
sizeof(a[5])是数组中第6个元素的长度,应该是1。但是你的数组长度为5,最后一个元素是a[4]哦! 要求整个数组的长度直接用数组名就好了,相当于直接把数组的首地址传给函数strlen, strlen(a)就是求得的整个数组占用的字节长度,而且应该为5而不是7。因为每个char类型的变量只占一个字节! 希望可以帮到你,不会的可以问我。希望采纳嘿嘿
第2个回答  2011-06-12
这个不对,a[5]是数组a中的一个元素,相当于一个char 类型的变量,sizeof(a[5])=1.要想得到数组a的大小,应该用sizeof(a[5]),得到的值为5。
第3个回答  2019-11-13
a后面加个‘\0’,由于b是逐个赋值,而且最后元素不是'\0',
所以b后面没有'\0';
数组长度是指数组元素个数;
在a中有6个元素,
b中有5个;
第4个回答  2011-06-14
sizeof(a) / sizeof(a[0])本回答被提问者采纳
相似回答