前几节, 我们讲了指针对于数组, 字符串, 还有一些补充的知识, 现在我们来讲指针的最后一个应用, 那就是函数指针.
下面我们来看一个小例子:
#include <stdio.h>
char *test();
int main()
{
char *name = test();
printf("name=%s\n", name);
return 0;
}
char *test()
{
return "rose";
}
这个例子的函数, 其实是返回char类型的函数指针, 然后在main函数里接收并且打印, 也就是相当于:
char *name = "rose";
PS:但是类型一定要能够兼容.
下面我们再来看另一个小例子:
#include <stdio.h>
void test();
int main()
{
// (*p)是固定的写法
// 左边的void: 指针变量p指向的函数没有类型
// 右边的(): 指针变量p指向的函数没有形参
void (*p)();
// 指针变量p指向了函数test
p = test;
// 有三种调用的方法
p();
//(*p)(); 利用指针间接调用函数
//test(); 直接调用函数
return 0;
}
void test()
{
printf("我调用了test函数\n");
}
有些人会感到疑惑, 为什么函数也能用指针调用呢?
答案其实很简单, 因为内存, 只要在程序里有地址的变量, 或者函数, 什么都可以, 只要你有地址, 指针就能指向该XXXX, 这样子解释应该不难理解, 所以在这个程序里, 是可以调用的.
再来一个完整的小例子:
#include <stdio.h>
int test2(int a, int b)
{
int sum = a + b;
printf("sum = %d\n", sum);
return sum;
}
int main()
{
int (*p)(int, int);
p = test2;
p(10, 20);
return 0;
}
看完这个小例子之后, 大家对函数的指针应该更加的深刻认识了, 好了, 指针这一章就到这里结束了, 过后我会继续添加更多的C语言基础知识~~谢谢~~