Re: [問題] 函數指標
小弟近日複習 函數指標,發現以前學的不夠徹底(汗顏...)
GOOGLE了一下
如 http://www.programmer-club.com.tw/ShowSameTitleN/c/25059.html
以下借用之前的文章 懇請賜教 謝謝
※ 引述《ohya0524 (歐爺)》之銘言:
: 標題: [問題] 函數指標
: 時間: 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;
1. 自動轉型! 請問是什麼type自動轉型成什麼type?
想法:
max 自動轉型成pointer
也就是說compiler 做了fptr=(int(*)(int,int))max;
2.是嗎?
: scanf("%d %d",&a,&b);
: printf("max=%d",fptr(a,b)); //(*fptr)(a,b)
我知道fptr跟(*fptr)的prinf出來的內容是一樣,
3.請問他們的type是否一樣?
4.這裡有哪一個也是自動轉型嗎?
: 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
也就是我的問題3 是否type是不一樣?
: 推 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
--
※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.160.1.105
※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1427013315.A.354.html
→
03/22 18:36, , 1F
03/22 18:36, 1F
→
03/22 18:36, , 2F
03/22 18:36, 2F
→
03/22 19:33, , 3F
03/22 19:33, 3F
→
03/22 20:29, , 4F
03/22 20:29, 4F
→
03/22 20:30, , 5F
03/22 20:30, 5F
→
03/22 20:31, , 6F
03/22 20:31, 6F
→
03/22 20:32, , 7F
03/22 20:32, 7F
→
03/22 20:32, , 8F
03/22 20:32, 8F
→
03/22 20:34, , 9F
03/22 20:34, 9F
→
03/22 20:37, , 10F
03/22 20:37, 10F
→
03/22 20:37, , 11F
03/22 20:37, 11F
→
03/22 21:36, , 12F
03/22 21:36, 12F
→
03/23 00:07, , 13F
03/23 00:07, 13F
→
03/23 00:08, , 14F
03/23 00:08, 14F
討論串 (同標題文章)