char *a='ab';//a[2]一定为'\0',但是,a[5]这样的指针越界不会报错
char a[3] = {'a','a','a'};//a[3]属于越界,会报错
char b[5]={'b','b'};//系统会自动将没定义的字符定义为'\0',即此字符串为{'b','b','\0','\0','\0'}
int j,q;
j = strlen(b);//值为1
q = strlen(b);//值不一定为3,strlen的机制是直到检测到'\0'为止
char c[3] = {'c','c','\o'};
strcat(b,c);//没问题
strcat(b,a);//报错,strcat的机制是把a中的字符添加到b字符串后面,直到检测到a中的'\o'停止添加。