上往建站提供服务器空间服务商,百度快照排名,网站托管,百度推广运营,致力于设计外包服务与源代码定制开发,360推广,搜狗推广,增加网站的能见度及访问量提升网络营销的效果,主营:网站公司,百度推广公司电话,官网搭建服务,网站服务企业排名,服务器空间,英文域名等业务,专业团队服务,效果好。
遵义企业网站设计 - 遵义高端网站定制 - 遵义品牌网站搭建 - 上往建站

函数
函数指针作为某个函数的参数
函数指针变量可以作为某个函数的参数来使用的,回调函数就是一个通过函数指针调用的函数。
简单讲:回调函数是由别人的函数执行时调用你实现的函数。
以下是来自知乎作者常溪玲的解说:
你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。
实例
实例中 populate_array 函数定义了三个参数,其中第三个参数是函数的指针,通过该函数来设置数组的值。
实例中我们定义了回调函数 getNextRandomValue,它返回一个随机值,它作为一个函数指针传递给 populate_array 函数。
populate_array 将调用 10 次回调函数,并将回调函数的返回值赋值给数组。
实例
#include <stdlib.h> #include <stdio.h>
void populate_array(int *array, size_t arraySize, int (*getNextValue)(void)){
for (size_t i=0; i<arraySize; i++)
array[i] = getNextValue();}
int getNextRandomValue(void){
return rand();}
int main(void){
int myarray[10];
populate_array(myarray, 10, getNextRandomValue); for(int i = 0; i < 10; i++) {
printf("%d ", myarray[i]); }
printf("n"); return 0;}
编译执行,输出结果如下:
16807 282475249 1622650073 984943658 1144108930 470211272 101027544 1457850878 1458777923 2007237709
8 篇笔记 写笔记
有关于 size_t:
size_t 是一种数据类型,近似于无符号整型,但容量范围一般大于 int 和 unsigned。这里使用 size_t 是为了保证 arraysize 变量能够有足够大的容量来储存可能大的数组。
ElleryQ
ElleryQ
844***495@qq.com
参考地址
5年前 (2017-09-21)
fwfdjq23
fwf***23@163.com
35
size_t 类型在C语言标准库函数原型使用的很多,数值范围一般是要大于int和unsigned.
但凡不涉及负值范围的表示size取值的,都可以用size_t;比如array[size_t]。
size_t 在stddef.h头文件中定义。
在其他常见的宏定义以及函数中常用到有:
1,sizeof运算符返回的结果是size_t类型;
2,void *malloc(size_t size)...
fwfdjq23
fwfdjq23
fwf***23@163.com
5年前 (2017-11-01)
钢板
sim***php@163.com
33
更标准写法 GCC 直接能过,指针变量用指针变量的方式处理。
#include <stdlib.h>
#include <stdio.h>
// 回调函数
void populate_array(int *array, int arraySize, int (*getNextValue)(void))
{
int i;
for(i=0; i<arraySize; i++){
*(array+i) = getNextValue();
}
}
// 获取随机值
int getNextRandomValue(void)
{
return rand();
}
int main(void)
{
int myarray[10];
int i;
populate_array(myarray, 10, getNextRandomValue);
for(i=0; i<10; i++) {
printf("%d ", myarray[i]);
}
printf("
");
return 0;
}
钢板
钢板
sim***php@163.com
3年前 (2019-03-25)
神奇杨半仙
227***4534@qq.com
73
引用这段话:你到一个商店买东西,刚好你要的东西没有货,于是你在店员那里留下了你的电话,过了几天店里有货了,店员就打了你的电话,然后你接到电话后就到店里去取了货。在这个例子里,你的电话号码就叫回调函数,你把电话留给店员就叫登记回调函数,店里后来有货了叫做触发了回调关联的事件,店员给你打电话叫做调用回调函数,你到店里去取货叫做响应回调事件。
可以这样理解,号码就是回调函数的名称,手机就是函数指针,有手机有了号码,就可以进行回调。
神奇杨半仙
神奇杨半仙
227***4534@qq.com
3年前 (2019-04-15)
菜鸟程序员
a74***7961@qq.com
30
补充下带参的回调函数:
#include <stdio.h>
int sum(int a,int b){
return a+b;
}
//sum2回调sum函数
int sum2(int num,int (*sum)(int,int),int a,int b){
return num * sum(a,b);
遵义企业网站设计 - 遵义高端网站定制 - 遵义品牌网站搭建 - 上往建站
上往建站提供搭建网站,域名注册,官网备案服务,网店详情页设计,企业网店,专业网络店铺管理运营全托管公司咨询电话,服务器空间,微信公众号托管,网页美工排版,致力于域名申请,竞价托管,软文推广,全网营销,提供标准级专业技术保障,了却后顾之忧,主营:虚拟主机,网站推广,百度竞价托管,网站建设,上网建站推广服务,网络公司有哪些等业务,专业团队服务,效果好。
服务热线:400-111-6878 手机微信同号:18118153152(各城市商务人员可上门服务)