看板 C_and_CPP 關於我們 聯絡資訊
開發平台(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)
sawang:max本身就是個位址了 12/29 22:39
xatier:max 的「名字」本身指向自己 12/30 00:32
Favonia:原Po: C 標準規定很多偷偷做的轉換。這是其中一個。 12/30 01:51
Favonia:sawang: 自動轉換有二例外:當 & 或 sizeof 的運算元不轉 12/30 01:52
Favonia: (建議當無聊冷知識看過就算了 lol) 12/30 01:52
Favonia:xatier: 同上。實際上是不同東西,只是大多數狀況下會轉。 12/30 01:54
tropical72:推 F 大,本身較習慣寫 fptr=max, (*fptr)(a,b); 只是 12/30 02:02
tropical72:大多compiler真的都會自己轉,導致二種寫法都可以. 12/30 02:02
xatier:原來如此,感謝 F 大指點,學到了新知識! 12/30 04:01
sawang:感謝F兄指點,受益良多。:) 12/30 11:44