使用函数指针 来调用 printf
。下面是对代码的详细解释:
📄 源代码解析
#include <stdio.h>
int main()
{
int (*myshow)(const char *, ...); // 声明一个函数指针,指向可变参数函数
printf("hello world!\n");
myshow = printf; // 将 printf 函数的地址赋值给 myshow
myshow("============\n"); // 使用函数指针调用 printf
return 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 比较函数);
-
实现函数数组(如命令分发表);
-
动态调用(模拟多态);
-
插件式架构。
如果你想了解函数指针数组、结构体中嵌入函数指针或函数回调机制,我可以进一步示例说明。