字符串数组长度,字符数组长度问题

字符串数组长度,字符数组长度问题

问题描述:

char a[] = {'a','b','c'};
char b[] = "abc";
请问下数组a和数组b的长度我理解的是都为3,但是答案是b的长度大于a的长度,
不太明白后面那个是不是要算上\0呢,这个长度是要用strlen计算么

任何字符串他都会在字符结尾自动添加上'\0'。因为计算机判定字符串的长度就是看这个'\0'的字符串,所以strlen也是这个原理。
前一楼的兄弟已经说的很明白了,但是要注意一点,因为你现在定义的是char b[],这种方式,这是计算机根据字符串自动计算长度,所以他会分配四个字节,
如果是自己定义数组的长度需要把'\0'加上,不然会有截断,所以应该定义:char b[4] = "abc"

对于字符而言,就是'a','b'等,一个字符的长度为1,
对于字符串而言,就是'abc'而言,因为所有的字符串在结尾都会自动加上‘\0’,所以数组b的长度应该是3+1=4.

字符串实际长度为4,有\0作为结尾标识,strlen的的值为3,不包括\0