病例 不理解C C 的函式指標

2021-04-09 07:23:50 字數 2271 閱讀 7412

一直對函式指標的概念一知半解的,於是搜尋了一把,發現幾個帖子講解不錯,就帖子這裡了.      

病例:不理解c/c++的函式指標

大怪獸

病人:

醫生,我折騰了

許久,無法理解函式指標。

中醫:能意

識到自己不理解,不錯。那

麼你

說說你目前的理解。函式指標是什

麼? 病人

:函式指

針是指向函式的指標。

中醫:那麼

函式是什麼?

病人

:函式就是函式。 中醫

:不是指向函式的指標 ?

病人:

自然不是。中醫:

那函式怎麼可以

賦值給函式指標?

難道

int可以

賦值給 int* ?病人:

這個。。。。。。中醫:

邏輯不通了吧? 病人

:是啊,怎

麼回事哩?中醫:

這個問題先

擱置一下,我

問你,什麼是指

針? 病人

:是放位址的變數。

中醫

:函式指

針裡面放的什麼?

病人

:函式入口位址。 中醫

:那

麼函式指

針就是放函式入口位址的變數?

病人

:  (

小心地)

我同意。 中醫

:函式是放函式入口位址的常量。 病人

:哇!這樣

一來就好解釋了

!函式

賦值給函式指

針就像把常量

賦值給同型別

變數!中醫:

還有

問題嗎? 病人

:有,

"函式是放函式入口位址的常量。"這

句話

不通啊。

函式是放自己入口位址的東西?

中醫

:孺字可教。這裡

"函式入口位址

"是乙個

詞,不能拆。真正的函式,無非是一塊代

碼,

c/c++

中沒有描述"一

塊**"

的東西,

只有描述"一

塊**"

的入口位址的

東西,函式及函式指標。

病人

:我懂了,

"函式指

針是指向函式

(1)的指標"

和"

函式(2)

不是指向函式

(3)的指標"

的矛盾,

出自"函式

(1)"

的是你剛才說

的"

真正的函式",

函式

(2)(3)

指的c/c++語法意

義上的"函式

",兩碼事!

中醫:嗯

,有道理。那麼還有

問題嗎? 病人

:"函式指

針是指向函式的指標。

"這句話

固然誤導

人,不過

c/c++的語

法,也起到了推波助

瀾的作用。

//#include

typedef int (*fn_haha)();

int real_haha()

void main(int argc, char* argv)

//既然

haha

和real_haha

是乙個層

次上的東西,

那麼呼叫的時

候為什麼

乙個"real_haha()

; ",

乙個(*haha)()

哩?很明

顯是在搞分化,搞腦子。

醫生:

連c/c++

語法你都敢批評,

強的!

正如你所說,

這不是好的

語法,所以現在的

編譯器,比如vc和

gcc,

都允許用

haha()

;來代替傳統的

(*haha)();你44

就知道了。

至於

書上都寫

(*haha)();

我只能說,

這個

問題我自己也被

書害了很久,最後扔了

書自己想通的。 病人

:我的病好了,我回去也把書扔了

如何通俗的理解函式的極限 不理解函式極限的定義!

極限定義裡,為什麼用 存在 任意 不等式 的數學語言來定義極限?怎樣將普通語.樓主的問題顯然是有備而來,是經過嚴格邏輯分析後有感而發的問題。確確實實,我們的高數教師,在教極限時,其實他們的大多數,也只是跟著和尚就念經,跟著道士就畫符。解釋來解釋去就是那麼死板板的幾句話,連他們自己也沒有make se...

CSS不理解的知識點

使用條件 單獨使用他們的時候均沒有效果需要是使用了絕對定位absolute的時侯才能其作用。left 靠左邊距離多少 right 靠右邊距離多少 top 距離頂部距離為多少 bottom 距離下邊距離為多少 舉例說明如下 left 50px就是距離左邊的距離就是50px 如果為 50px 那麼就會像...

我不理解的多執行緒技巧

該不會真的有人以為使用了鎖就能高枕無憂了吧 以下案例是在乙個公共方法裡的設計,功能是從redis裡獲取資料,顯然該方法會在多執行緒的情況下使用到,這裡採用了乙個設計,我不是很理解。rate double eodratelocalcache.get cachekey eodcontex.eod beg...