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