C语言,回调函数以及指针使用事项

基本介绍

1)函数指针变量可以作为某个函数的参数来使用的,回调函数就是一个通过函数指针调用的函数
2)简单的讲:回调函数是由别人的函数执行时调用你传入的函数(通过函数指针完成)

应用实例

使用回调函数的方式,给一个整型数组 int arr[10] 赋 10 个随机数.

#include <stdlib.h> 
#include <stdio.h> 

// 回调函数 
//1. int (*f)(void) 
//2. f 就是 函数指针 , 它可以接收的函数是 (返回 int ,没有形参的函数) 
//3. f 在这里被 initArray 调用,充当了回调函数角色 

void initArray(int *array, int arraySize, int (*f)(void)) { 
	int i ; 
	
	//循环 10 
	for ( i=0; i<arraySize; i++) { 
		array[i] = f(); //通过 函数指针调用了 getNextRandomValue 函数 
	} 
}

// 获取随机值 
int getNextRandomValue(void) { 
	return rand();//rand 系统函数, 会返回一个随机整数 
}

int main(void) { 
	int myarray[10],i; //定义一个数组和 int 
	
	//说明 
	//1. 调用 initArray 函数 
	//2. 传入了一个函数名 getNextRandomValue (地址), 需要使用函数指针接收 每个函数都是一个地址。 
	
	initArray(myarray, 10, getNextRandomValue); 
	
	//输出赋值后的数组 
	
	for(i = 0; i < 10; i++) { 
		printf("%d ", myarray[i]); 
	}
	printf("\n");
	
	return 0; 
}

指针的注意事项和细节

1)指针变量存放的是地址,从这个角度看指针的本质就是地址。
2)变量声明的时候,如果没有确切的地址赋值,为指针变量赋一个 NULL 值是好的编程习惯。
3)赋为 NULL 值的指针被称为空指针,NULL 指针是一个定义在标准库 <stdio.h>中的值为零的常量 #define NULL 0
4)指针使用一览 (见后)
5)案例演示

#include <stdio.h> 

void main() { 
	int *p = NULL; // p 空指针 
	
	int num = 34; 
	p = &num; 
	
	printf("*p=%d", *p); // 34 
	printf("\np的地址值为 %p, p指向的地址值为 %p, p指向的值为%d",&p,p,*p); 
	printf("\nnum的地址值为 %p",&num);
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值