C语言字符教组占⽤内存怎样算?
一、问题
有三个字符数组:
char a[] = "abcd";
char b[] = {'a', 'b', 'c', 'a'};
char c[10] = "abcd";
它们各占⽤内存多少字节?
二、解答
a 占5个字节,因为除了4个字符,系统还会⾃动分配⼀个 ‘\0’。
b 占4 个字节,如果字符数组以数组⽅式初始化,⽽不是以字符串⽅式初始化,那么最后没有那个'\0'。
c 占10个字节。前4个字节是“abcd”,第 5个字节是'\0',后5个字节⽆定义。
三、总结
以上算的是占⽤内存的⼤⼩,如果计算字符串长度,以上三个字符串长度都是4。 计算占⽤内存空间⽤ sizeof(变量名),计算字符串长度⽤ strlen(变量名)。