20 对指针数组丶 数组指针丶 函数指针丶 函数指针数组 丶 指向函数指针数组的指针的理解

1.指针数组:

指针数组本质上是数组,例如int *arr[4] ,arr是先跟[ ]结合再跟* 结合,所以其是一个指针数组,数组里存放的元素是4个 int型指针。

2.数组指针:

数组指针是指向数组首元素的地址的指针,其本质为指针(这个指针存放的是数组首地址的地址,这个指针不可移动); 例如int(*arr)[4] , 因为 * 先跟 arr 结合,再跟 [ ] 结合,所以其是一个数组指针。

二维数组的传参可以运用数组指针
void test()
{   int arr[3][4]={0};
   print(arr);//传参时数组降级为指针
}
void print(int (*arr)[4])//列不能省略,确定指针移动的长度
{
	...
}//打印代码就不再赘写
其实指针数组和数组指针的区别方法就是看变量先跟 [ ] 结合还是跟 * 结合,先跟[ ]结合就是指针数组,先跟 * 结合就是数组指针。

3.函数指数:

       函数指针就是存放函数地址的指针。C在编译时,每一个函数都有一个入口地址,有了指向函数的指针变量就可以通过指针调用该函数。函数指针有两个用途:调用函数和做函数的参数。
       函数指针做函数的参数:如果你把函数的指针(地址)作为参数传递给另一个函数,当这个指针被用来调用其所指向的函数时,我们就说这是回调函数。回调函数不是由该函数的实现方直接调用,而是在特定的事件或条件发生时由另外的一方调用的,用于对该事件或条件进行响应。
#include<stdio.h>

typedef int(*callback)(char *str); 
// 回调函数的名称为 callback,参数是char *str
int functionA(char *str)
{
	printf("回调 functionA(char *str) 函数:%s!\n", str);
	return 0;
}

// 调用回调函数:直接通过函数指针
int test1(int(*ptr)(), char *str)
{
	printf("test1:\n不调用回调函数打印:%s!\n", str);
	(*ptr)(str);
}

int main()
{
	char *str = "hello world!";

	test1(functionA, str);

	printf("test2:\n");
	callback test2 = functionA;
	test2(str);

	return 0;
}



4.函数指针数组:

把函数的地址放到一个数组中,那么这个数组就叫做函数指针数组。例子: int (*p[5])(fun) 。


5.指向函数指针数组的指针:

指向函数指针数组的指针实质上是一个指针。指针指向一个数组,数组里放的都是函数指针。 




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明 YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明YOLO高分设计资源源码,详情请查看资源内容中使用说明

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值