问个小问题
char p[]={'a','e','r'};
char q[15]={'a','e','r'};
printf("p=%d\nq=%d\n",strlen(p),strlen(q));
VS2008下输出的是15,3
问下15是怎么来的,
size_t strlen_a(const char * str) {
size_t length = 0 ;
while (*str++ )
++ length;
return length;
}
第一个为什么不是6呢?
[解决办法]
char p[]={'a','e','r'};//这里没有结束符'\0';strlen就会一直往后找为'\0'的字符(已经访问越界,结果不能确定)
char q[15]={'a','e','r'};//'r'之后的元素没有显式初始化,被始化为'\0',所以很幸运的,这个可以得到正确的结果..