int aaa(char* s);
int main() {
int k;
char s[] = "www.suse.edu.cn";
k = aaa(s);
printf("%d\n",k);
return 0;
}
int aaa(char* s) {
char* t=s;
while (*t++);
return t - s - 1;
}
这不是计算字符串长度么,这个字符串共有15个字符,所以输出为15
具体是通过循环指针t,一直向后找字符串结束符的位置。字符串结束符在最后一个字符之后。实际t最终指向字符串结束符后面一个字符的位置,因为 * t++先判断 * t是否为0,然后再++,使得t指向字符串结束符后,while结束还会时t向后移动一位,所以字符串长度计算就是t的地址减去s的地址,还要再减去1的原因
计算字符串长度。
int aaa(char* s) {
char* t=s;
while (*t++);
return t - s - 1;
}
t指向s首地址,循环判断当前是否为空,如果不为空则向后移动,循环判断。结束循环时,指向了一个空字符位置,所以return时需要-1
您好,我是有问必答小助手,您的问题已经有小伙伴帮您解答,感谢您对有问必答的支持与关注!