欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 科技 > 名人名企 > 从头开始学C语言第三十六天——函数指针和函数指针数组

从头开始学C语言第三十六天——函数指针和函数指针数组

2025/4/2 5:34:51 来源:https://blog.csdn.net/weixin_51953078/article/details/146766019  浏览:    关键词:从头开始学C语言第三十六天——函数指针和函数指针数组

函数指针

函数指针用来存放函数地址,这个地址就是一个函数的入口

函数名代表函数的入口地址

一般形式:

<数据类型> (*<函数指针名称>) (<参数说明列表>);

int *power (int a);

数据类型是函数指针所指函数的返回值类型

参数说明列表应该与函数指针所指函数形参保持一致

函数指针名称中,*说明是指针不可缺少的,意为函数指针

#include <stdio.h>int add(int,int);int main()
{int a=1;int b=2;int (*p) (int,int);p=add;printf("result = %d\n",add(a,b));printf("result = %d\n",(*p)(a,b));return 0;
}int add(int a,int b)
{return a+b;
}

运行程序会发现,函数指针本质上跟前面学的指针没什么区别,只是所指对象的区别。定义了一个函数指针,并指向add这个函数的地址,在输出结果时,既可以通过函数add,也可以通过指针*p。当主函数内部大量调用函数,可以通过指针的方式简化程序。

函数指针数组

函数指针数组和之前的指针数组类似。指针数组是存放指针的数组,函数指针数组是存放函数指针的数组。

一般形式:
<数据类型> (*<函数指针数组名>) (<大小>) (<参数说明列表>)

大小:函数指针数组元素个数。其余部分与普通函数指针一样。

#include <stdio.h>int add(int ,int);
int sub(int,int);int main()
{int a=3;int b=1;int (*p[2])(int,int);p[0]=add;p[1]=sub;printf("result=%d\n",add(a,b));printf("result=%d\n",(*p[0])(a,b));printf("result=%d\n",(*p[1])(a,b));return 0;
}int add(int a,int b)
{return a+b;
}int sub(int a,int b)
{return a-b;
}

 

 

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com

热搜词