作者ohya0524 (歐爺)
看板C_and_CPP
標題[問題] 函數指標
時間Thu Dec 29 22:04:46 2011
開發平台(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