[問題] 函數指標

看板C_and_CPP作者 (歐爺)時間12年前 (2011/12/29 22:04), 編輯推噓4(406)
留言10則, 4人參與, 最新討論串1/4 (看更多)
開發平台(Platform): C 問題(Question): 為啥四種寫法都對呢? (某兩行可以決定是否用註解替換) 程式碼(Code):(請善用置底文網頁, 記得排版) #include<stdio.h> int max(int x,int y){ return (x>y?x:y); } int main() { int (*fptr)(int,int); int a,b; fptr=max; //fptr=&max; scanf("%d %d",&a,&b); printf("max=%d",fptr(a,b)); //(*fptr)(a,b) return 0; } 補充說明(Supplement): 我的疑問... fptr是個指標 那max不是應該用取址符號&取出位址嗎? -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 140.116.82.25 ※ 編輯: ohya0524 來自: 140.116.82.25 (12/29 22:06) ※ 編輯: ohya0524 來自: 140.116.82.25 (12/29 22:15)

12/29 22:39, , 1F
max本身就是個位址了
12/29 22:39, 1F

12/30 00:32, , 2F
max 的「名字」本身指向自己
12/30 00:32, 2F

12/30 01:51, , 3F
原Po: C 標準規定很多偷偷做的轉換。這是其中一個。
12/30 01:51, 3F

12/30 01:52, , 4F
sawang: 自動轉換有二例外:當 & 或 sizeof 的運算元不轉
12/30 01:52, 4F

12/30 01:52, , 5F
(建議當無聊冷知識看過就算了 lol)
12/30 01:52, 5F

12/30 01:54, , 6F
xatier: 同上。實際上是不同東西,只是大多數狀況下會轉。
12/30 01:54, 6F

12/30 02:02, , 7F
推 F 大,本身較習慣寫 fptr=max, (*fptr)(a,b); 只是
12/30 02:02, 7F

12/30 02:02, , 8F
大多compiler真的都會自己轉,導致二種寫法都可以.
12/30 02:02, 8F

12/30 04:01, , 9F
原來如此,感謝 F 大指點,學到了新知識!
12/30 04:01, 9F

12/30 11:44, , 10F
感謝F兄指點,受益良多。:)
12/30 11:44, 10F
文章代碼(AID): #1E_7E08D (C_and_CPP)
討論串 (同標題文章)
文章代碼(AID): #1E_7E08D (C_and_CPP)