1.#include<string>
//C++的string的库
A[0]就是A的第一个字母;
A.size() 和 A.length()都是A除去 ‘\0’ 的长度。
2.#include
#include"stdio.h"
#include"string.h"
int main()
{
char A[]={'a',' ','c','d'};
char B[]="a cd";
printf("strlen(A)=%d\n",strlen(A));
printf("strlen(B)=%d\n",strlen(B));
}
但是输出的结果是
strlen(A)=7
strlen(B)=4
A的长度是7,不知道为什么,但是如果把A[]改为A[5](把’\0’计入在内了) 则结果为
strlen(A)=4
strlen(B)=4
如果故意把A[]改为A[4](正确的应该是A[5],故意不把’\0’加进去)则结果又变成了
strlen(A)=7
strlen(B)=4
如果我代码中加入打印每个字符
#include"stdio.h"
#include"string.h"
int main()
{
char A[4]={'a',' ','c','d'};
char B[]="a cd";
printf("strlen(A)=%d\n",strlen(A));
printf("strlen(B)=%d\n",strlen(B));
for(int i=0;i<strlen(A); ++i)
{
printf("%c\n",A[i]);
}
}
然后输出的
strlen(A)=4
strlen(B)=4
又是正确的了。
由此可见这可能是编译器的原因。
所以当我们在定义一个字符数组时,尽量加上下标的字符长度。
而用*A定义字符串就不会出现这种现象;
所以在定义字符串时尽量用指针,定义字符数组时用A[],且下表最好不要缺省。
总结:貌似一切求字符串或字符数组的长度问题时,其长度都不包括 ‘\0’