使用函數指針來調用 printf
。下面是對代碼的詳細解釋:
📄 源代碼解析
#include <stdio.h>int main()
{int (*myshow)(const char *, ...); // 聲明一個函數指針,指向可變參數函數printf("hello world!\n");myshow = printf; // 將 printf 函數的地址賦值給 myshowmyshow("============\n"); // 使用函數指針調用 printfreturn 0;
}
🔍 關鍵點講解
1. 函數指針聲明
int (*myshow)(const char *, ...);
myshow
是一個函數指針;它指向一個函數,該函數返回
int
,參數是const char *
和可變參數(...
);printf
符合這個簽名:int printf(const char *format, ...)
,因此可以賦值。
2. 函數指針賦值
myshow = printf;
這行將標準庫函數 printf
的地址賦值給函數指針 myshow
。
3. 函數指針調用
myshow("============\n");
這一行通過函數指針調用 printf
,打印出 "============"
。
? 輸出結果
程序輸出如下:
hello world!
============
📚 拓展知識:函數指針的作用
函數指針可用于:
回調函數(如 qsort 比較函數);
實現函數數組(如命令分發表);
動態調用(模擬多態);
插件式架構。
如果你想了解函數指針數組、結構體中嵌入函數指針或函數回調機制,我可以進一步示例說明。