Re: [問題] 關於指標與函數的輸出問題

看板C_and_CPP (C/C++)作者 (lsc36)時間14年前 (2012/03/31 10:19), 編輯推噓2(206)
留言8則, 3人參與, 最新討論串2/2 (看更多)
※ 引述《SogeKing (狙擊王XD)》之銘言: : main(){ : int WW[10]; : WW[0]=55; WW[1]=66 : AA(&WW); : BB(&WW); BB(*WW); : CC(&WW); CC(*WW); : .... : } : AA (int aa[]) {printf("%d\n",aa[0]+1)}; : BB (int bb) {printf("%d\n",bb+1)}; : CC (int cc[]) {printf("%d\n",cc+1)}; WW == &WW[0] == 1000 gcc把&WW視為WW AA(&WW) -> AA(1000) -> printf *(1000+0)+1 -> printf 55+1 -> 輸出56 BB(&WW) -> BB(1000) -> printf 1000+1 -> 輸出1001 BB(*WW) -> BB(55) -> printf 55+1 -> 輸出56 CC(&WW) -> CC(1000) -> printf (int*)1000+1 -> 輸出1004 CC(*WW) -> CC(55) -> printf (int*)55+1 -> 輸出59 這樣吧XD -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.122.185.198

03/31 10:24, , 1F
感謝大大的解說!!!...大概瞭了XD
03/31 10:24, 1F

03/31 14:12, , 2F
補充一點 事實上 &WW 的型態是 int (*)[10]
03/31 14:12, 2F

03/31 14:13, , 3F
把它丟進 int [] 變數是個很不對勁的行為
03/31 14:13, 3F

03/31 14:14, , 4F
操作上就如這篇說的 只不過是把 1000 這個值給扔過去而已
03/31 14:14, 4F

03/31 14:15, , 5F
這出題者大概只是單純想問這種狀況下的輸出而已
03/31 14:15, 5F

03/31 14:16, , 6F
話說回來, 要玩嚴一點的話 CC 這個函式本身也不及格就是了XD
03/31 14:16, 6F

03/31 14:16, , 7F
所以這個題目還是看看就好 別太深究
03/31 14:16, 7F

03/31 16:25, , 8F
同意樓上...為什麼考試總是在考這種東西= =
03/31 16:25, 8F
文章代碼(AID): #1FTcd7Ep (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1FTcd7Ep (C_and_CPP)