#include<stdio.h>int fun(char *s) { char *t = s; while(*t++); //这里因为++的运算级高于*,所以是先地址加char型长度再取值 //第一次循环条件: 'b' //第二次循环条件: 'c' //第三次循环条件: 'd' //第四次循环条件: '\0' 第四次的时候直接跳出了 return t-s; //那么如果s[0] == 'a' 的地址是00 最后那个*t指向'\0'的地址就是 04 //所以返回值不应该是4吗? } int main() { char *c = "abcd"; int a = fun(c); printf("%d",a); //输出为什么是5? return 0; } (这样分析哪里出错了,可能我调试的姿势不对,我没有解决该问题,请指教!多谢!)
相关分类