字符数组保存时有可能最后一位有‘\0’,需要注意。参考:
char a[] ="abcd"; //这样赋值最后一位会有隐含的‘\0’; 用cout输出来看到的还是abcd
并且有:
sizeof(a) == 5; strlen(a) == 4;
char a[5] = "abcde"; //会报错,最后要留一位给‘\0’ char a[5] = {'a','b','c','d','d'}; //没问题,没有\0的,sizeof(a) == 4
char* a = “abcde”; sizeof(a) == 4; // 这个是a这个指针的长度,不是数组长度 strlen(a) == 5; // 这个是该数组长度
strlen:从数组指针开始,直到找到’\0’结束,这中间的字符个数;
如果char* 类型变量不是用常量直接初始化的,那么在赋值结束时一定要手动添加一个’\0‘(分配空间时,也需要多分配一个char空间),这样用strlen才可以正确得返回长度,后面的使用也不会有问题,例如:没有加’\0‘时,这个变量作为参数传入函数就出了问题invalid_argument。
最后一位的’\0‘不参与计算==》》 a[strlen(a)-1] == e;
