C语言函数指针做函数参数案例
来源:互联网 发布:数字电路考研知乎 编辑:程序博客网 时间:2024/06/05 09:07
本案例利用函数指针当作函数的参数,函数 add(int (*pf)(int*,int),int *a,int n)可以做到传入addOne就对数组a中每个数值加1,传入addTwo就对数组a中每个数值加2,案件具体代码如下:
#include <stdio.h>//对数组每个数加1int addOne(int *a,int n){for(int i=0;i<n;i++)++a[i];return 1;}//对数组每个数加2int addTwo(int *a,int n){for(int i=0;i<n;i++)a[i]+=2;return 2;}//对数组每个数加3int addThree(int *a,int n){for(int i=0;i<n;i++)a[i]+=3;return 3;}//函数指针作参数int add(int (*pf)(int*,int),int *a,int n){return (*pf)(a,n);}int main( void ){int a[]={1,2,3,4,5,6,7,8,9,10};printf("\n原始a[]:");for(int i=0;i<10;i++)printf("%d ",a[i]); //输出原始数组值printf("\n函数返回值:%d",add(addOne,a,10));printf("\n传入addOne后:");for(int i=0;i<10;i++)printf("%d ",a[i]); //输出数组值printf("\n函数返回值:%d",add(addTwo,a,10));printf("\n传入addTwo后:");for(int i=0;i<10;i++)printf("%d ",a[i]); //输出数组值printf("\n函数返回值:%d",add(addThree,a,10));printf("\n传入addThree后:");for(int i=0;i<10;i++)printf("%d ",a[i]); //输出数组值}
运行结果:
原始a[]:1 2 3 4 5 6 7 8 9 10函数返回值:1调用函数(*pf[0])()后a[]:2 3 4 5 6 7 8 9 10 11函数返回值:2调用函数(*pf[1])()后a[]:4 5 6 7 8 9 10 11 12 13函数返回值:3调用函数(*pf[2])()后a[]:7 8 9 10 11 12 13 14 15 16
- C语言函数指针做函数参数案例
- C语言:指针做函数参数
- C语言之指针专题四:指针做函数参数
- C语言之指针专题四:指针做函数参数
- c指针做函数参数
- 黑马程序员-------C语言----指针做函数参数
- 指针做函数参数——高效C语言
- c语言用指针做函数参数和用变量做函数参数的不同点
- 【C语言提高37】结构体元素做函数参数与结构指针做函数参数
- C语言函数指针数组简单案例
- C语言之指针专题二:指针做函数参数是指针存在的最大意义
- C语言指针笔记之 一级指针的应用(指针做函数参数)
- C语言之指针专题二:指针做函数参数是指针存在的最大意义
- 指针做函数参数
- 函数指针做参数
- 指针做函数参数
- 函数指针做参数
- c语言中一级指针和二级指针做函数参数
- Ubuntu如何编译内核
- 网站跨站点单点登录
- Ubuntu Server 10.04中文环境乱码解决办法
- 数据为王的时代,数据的价值毋庸置疑
- 『boost』boost::tuple学习
- C语言函数指针做函数参数案例
- C# 如何获取某文件夹的文件列表,并按文件的创建时间排序?
- poj4012
- [LeetCode] Surrounded Regions
- 第三课 循环式程序样式
- 删除系统自带应用程序,包括窗口小部件
- 一个类似“火柴棍”问题的面试题
- 视频下载(无意间不知道在哪里收藏的,我自己没有下载过,也没有测试过,如果你确实有需要下载下面的视频,就试试吧。如果下载不了也别扔石头。)
- English listening