#include<stdio.h>int?fun(char?*s)?
{?
????char?*t?=?s;?
????while(*t++);?//這里因為++的運算級高于*,所以是先地址加char型長度再取值??????
????????????????//第一次循環(huán)條件:?'b'?????
????????????????//第二次循環(huán)條件:?'c'?????
????????????????//第三次循環(huán)條件:?'d'?????
????????????????//第四次循環(huán)條件:?'\0'?第四次的時候直接跳出了?
????return?t-s;??//那么如果s[0]?==?'a'?的地址是00???最后那個*t指向'\0'的地址就是?04
??????????????????//所以返回值不應(yīng)該是4嗎?
}
int?main()?{?
????char?*c?=?"abcd";?
????int?a?=?fun(c);?
????printf("%d",a);?//輸出為什么是5???
????return?0;
}
(這樣分析哪里出錯了,可能我調(diào)試的姿勢不對,我沒有解決該問題,請指教!多謝!)
- 1 回答
- 0 關(guān)注
- 745 瀏覽
添加回答
舉報
0/150
提交
取消