#include <stdio.h> #include <string.h> int main(void) { char vc1[10]="vc++6.0",vc2[10]={ 'v','c','+','+','6','.','0' }; char tc1[]="tc2.0", tc2[]={ //采用了字符串整体赋值,会在后面自动加‘|0’ 't','c','2','.','0' }; printf("%d %d\n",sizeof(vc1),strlen(vc1)); printf("%d %d\n",sizeof(vc2),strlen(vc2)); printf("%d %d\n",sizeof(tc1),strlen(tc1)); printf("%d %d\n",sizeof(tc2),strlen(tc2)); return 0; } /* 10 7 10 7 6 5 5 5 请按任意键继续. . . */
有书作解释说,tc2的输出是一个不确定的数,因为tc2 存放的的是几个字符 ,而不是一个字符串数组,所以当检查到TC2[4]的时候并不是‘\0’,所以会继续向后检索
知道遇到第一个'\0' 才得以结束。