函式指標與函式名

2021-07-09 21:45:45 字數 540 閱讀 5801

首先函式指標的定義,如果指向無參函式,定義的時候後面一定要加(),否則編輯器無法分辨這是指向函式的指標

void (*f);   //指向void * 的指標

void (*f)(); //指向void (*)(void)函式的指標

int (*f)(); //指向int (*)(void)函式的指標

寫這個主要是因為今天突然想到,函式名,函式指標,到底都是啥?

先看**:

#include#includevoid f();

int main()

void f()

顯然,函式名就是乙個指向自身的函式指標(相當於c++裡的引用,不可被更改的指向自身的函式指標。)。

上面一組輸出已經說明了一切,各種c = f; c = &f; c = *f;等等的一些寫法,哪些可行,哪些不可行,都可以輕鬆的判斷出來了

另外,既然函式名也是特殊的函式指標,那麼用法肯定是相同的。

這裡也不再贅述。

函式指標與函式名

迷惑很久的問題了,今天正好又遇到這個問題,就抽了個時間研究總結了一下把它記錄下來。和同學討論乙個typedef的問題,實驗過程中偶然發現vs2005的行為 int fun wrong syntax constraint error f g wrong declares that g returns ...

函式名與函式指標

對函式名和函式指標存在一些疑惑,如下 通過乙個簡單的測試程式,並對其進行反彙編,對其分析,對上述問題有了清晰的認識.先貼上測試 和反彙編 以供分析.typedef void pfunc void void func int main void main 函式的反彙編 段 pfunc p p func...

關於函式名與函式指標

示例 如下 include int asdf int a int main 問題,為什麼asdf 5 p 5 p 5 三種呼叫都正確且都能輸出正確結果?解答 首先需要明確的一點 函式名不是指標,陣列名也不是指標。函式名只是在程式設計時候代指函式入口位址的符號,函式入口位址在載入到記憶體後就是固定的,...