京东商城网站怎么做的自适应,高中信息技术课程做网站,制作网站用什么软件好,提高自己网站函数指针
函数指针是指向函数的指针变量。
通常我们说的指针变量是指向一个整型、字符型或数组等变量#xff0c;而函数指针是指向函数。
函数指针可以像一般函数一样#xff0c;用于调用函数、传递参数。
函数指针变量的声明#xff1a;
typedef int (*fun_ptr)(int,i…函数指针
函数指针是指向函数的指针变量。
通常我们说的指针变量是指向一个整型、字符型或数组等变量而函数指针是指向函数。
函数指针可以像一般函数一样用于调用函数、传递参数。
函数指针变量的声明
typedef int (*fun_ptr)(int,int); // 声明一个指向同样参数、返回值的函数指针类型以下实例声明了函数指针变量 p指向函数 max
#include stdio.hint max(int x, int y)
{return x y ? x : y;
}int main(void)
{/* p 是函数指针 */int (* p)(int, int) max; // 可以省略int a, b, c, d;printf(请输入三个数字:);scanf(%d %d %d, a, b, c);/* 与直接调用函数等价d max(max(a, b), c) */d p(p(a, b), c); printf(最大的数字是: %d\n, d);return 0;
}编译执行输出结果如下
请输入三个数字:1 2 3
最大的数字是: 3回调函数
函数指针变量是可以作为某个函数的参数来使用的回调函数就是一个通过函数指针调用的函数。
简单讲回调函数是由别人的函数执行时调用你实现的函数。
以下是来自知乎作者常溪玲的解说 你到一个商店买东西刚好你要的东西没有货于是你在店员那里留下了你的电话过了几天店里有货了店员就打了你的电话然后你接到电话后就到店里去取了货。在这个例子里你的电话号码就叫回调函数你把电话留给店员就叫登记回调函数店里后来有货了叫做触发了回调关联的事件店员给你打电话叫做调用回调函数你到店里去取货叫做响应回调事件。 请看以下实例
#include stdlib.h
#include stdio.hvoid populate_array(int *array, size_t arraySize, int (*getNextValue)(void))
{for (size_t i0; iarraySize; i)array[i] getNextValue();
}// 获取随机值
int getNextRandomValue(void)
{return rand();
}int main(void)
{int myarray[10];/* getNextRandomValue 不能加括号否则无法编译因为加上括号之后相当于传入此参数时传入了 int , 而不是函数指针*/populate_array(myarray, 10, getNextRandomValue);for(int i 0; i 10; i) {printf(%d , myarray[i]);}printf(\n);return 0;
}编译执行输出结果如下
41 18467 6334 26500 19169 15724 11478 29358 26962 24464 实例中 populate_array() 函数定义了三个参数其中第三个参数是函数的指针通过该函数来设置数组的值。
size_t 是一种数据类型近似于无符号整型但容量范围一般大于 int 和 unsigned。这里使用 size_t 是为了保证 arraysize 变量能够有足够大的容量来储存可能大的数组。
实例中我们定义了回调函数 getNextRandomValue()它返回一个随机值它作为一个函数指针传递给 populate_array() 函数。
populate_array() 将调用 10 次回调函数并将回调函数的返回值赋值给数组。