Re: [問題] 函數指標

作者: jono103 (不說對不起)   2015-03-22 16:35:12
小弟近日複習 函數指標,發現以前學的不夠徹底(汗顏...)
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不是應該用取址符號&取出位址嗎?
:
:
作者: MOONRAKER (㊣牛鶴鰻毛人)   2015-03-22 18:36:00
問題1: max本來就是pointer,別人說過了。你說他是自動轉型,那反過來問你,請問max本來的「型」是什麼?
作者: Feis (永遠睡不著 @@)   2015-03-22 19:33:00
max 本身不是 pointer
作者: wenyonba (射後不理很XX啊!!!!)   2015-03-22 20:29:00
樓上F哥講的是不是就是像陣列名稱的概念?就是陣列名稱就是陣列名稱,只是在Compiler裡可以當常指標來用? 所以a[10]的話,a跟&a代表的東西是一樣的
作者: Feis (永遠睡不著 @@)   2015-03-22 20:32:00
a 跟 &a 也不一樣. 這已經是考古題了. 函數比陣列更複雜尤其有了 C++..
作者: wenyonba (射後不理很XX啊!!!!)   2015-03-22 20:34:00
這些語言規格的東西實在好難懂啊~~XD很多都是像原Po,可能知道行為是什麼,但是背後怎麼做的不太知道~~
作者: MOONRAKER (㊣牛鶴鰻毛人)   2015-03-22 21:36:00
O~X(
作者: jono103 (不說對不起)   2015-03-23 00:07:00
感謝各位大大回覆 to M大:自動轉型是根據推文Favonia得到to w大: 沒錯 知道行為是什麼 但不知道語言規格..等

Links booklink

Contact Us: admin [ a t ] ucptt.com