函式指標的妙用

2021-06-18 05:21:22 字數 599 閱讀 8886

假設程式裡面定義了100函式,函式名為fun1,fun2,fun3,fun4....fun100.

想在程式執行時候,給定乙個數比如10,如何能自動的呼叫fun10, 輸入20,自動呼叫fun20呢?

用if/else 或者switch/case都能實現。

但有沒有更好的辦法呢?

定義乙個巨集

#define fun(x) fun##x()

如果fun(1)、fun(2)這樣呼叫,能順利呼叫fun1,fun2,但是因為在傳參時候,這個x必須是個變數名argv[1],所以替換後就變成了funargv[1],這樣編譯就不能通過了。

#include typedef int (*func)(int a, int b);

int foo(int a, int b)

int bar(int a, int b)

int main(int argc, char *argv)

; scanf("%d", &x);

if (x<2)

return 0;

}

以上**北郵人論壇:

函式指標的妙用

今天上www.armfans.net 上瀏覽帖子的時候,看到乙個很好玩且非常有學習意義的帖子,將的是c中函式指標的妙用,現將內容轉錄如下 一小段精彩的 c語言,1和2實現相同的功能,歡迎大夥跟帖呵 特別感謝trio老師 1 void theuboot void theuboot void void ...

函式指標陣列的妙用

筆者在開發某軟體過程中遇到這樣乙個問題,前級模組傳給我二進位制資料,輸入引數為 char buffer和 int length,buffer是資料的首位址,length表示這批資料的長度。資料的特點是 長度不定,型別不定,由第乙個位元組 buffer 0 標識該資料的型別,共有256 28 種可能性...

函式指標陣列的妙用

問題原型 switch nstreamtype 這樣寫的 相當長,而且讓人看著不舒服。想到用函式指標陣列來加以改善。函式名實際上也是一種指標,指向函式的入口位址,但它又不同於普通的如int double 指標,看下面的例子來理解函式指標的概念 int funtion int x,int y void...