|
假如一个字符串常量为“hello”,那么在计算机里面存储的时候编译器会自动在后面加一个‘\0’,也就是说编译器会为它分配6个字节的存储空间,
对于一个字符数组加入没有指定它的长度,那么char a[]=“hello”将也是分配6个字节的存储空间,那么如果分配了长度的数组 char a[5]="hello",那么编译器在解释这一句的时候是不是也会在后面自动加上一个字节用来存储'\0',但是在用sizeof求它的分配空间的大小的时候仍然是5个字节,如果没有加的话,那么如果我用下面一段程序来求字符数组的长度的长度的时候:
int str_len(char s[])
{
int i = 0;
while(*s++!='\0')
i++;
return i;
}
岂不是最后没有‘\0’来表示结束了,除非在接下来的内存里有一个'\0'才能判断它结束么? |
|