1.strlen是针对'/0'检测的,同时strlen是函数,在这个意义上,strlen对未经初始化或赋值的变量是没有实际价值的
sizeof是运算符,它只对变量的类型感兴趣,变量的值对它没有影响。
char buf[108];
memset(buf,0,108);
printf("strlen(buf) is %d/n",strlen(buf)); //输出0
printf("sizeof(buf) is %d/n",sizeof(buf)); //输出108
2.在一些函数中字符串长度作为参数,一般要用sizeof,理由同上
如ssize_t recv(int s, void *buf, size_t len, int flags);
参数len应该是sizeof(buf),而不是strlen(buf),因为strlen(buf)以检测到'/0'为准,一般会为0