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

指针数组

int a=10,b=20;
int *arr[2]={&a,&b};//指针数组,数组 
printf("%p  %p\n\n",arr[0],&a);// 000000000062FE3C  000000000062FE3C 打印结果为两个一样的地址

数组指针

int (*parr)[2];
parr=&arr; //数组指针,指针 
printf("%p  %p\n\n",&arr,parr+1);// 000000000062FE20  000000000062FE28 parr+1的地址加了8,指向下一个数组

函数指针

void funA(){
printf("I am funA!\n");
}
void funB(){
printf("I am funB!\n");
}
void (*pf)();//函数指针,指针
pf=funA;
pf();
//调用funA()   I am funA!

函数指针数组

void (*pf2[2])()={funA,funB};//函数指针数组, 数组 
pf2[0](); //调用funA()   I am funA!
pf2[1](); //调用funB()  I am funB!

指向函数指针数组的指针

即是指针,保存函数指针数组的地址

源码

#include<stdio.h>

void funA(){
	printf("I am funA!\n");
}
void funB(){
	printf("I am funB!\n");
}

int main(){
	int a=10,b=20;
	int *arr[2]={&a,&b};	//指针数组,数组 
	int (*parr)[2];
	parr=&arr;		//数组指针,指针 
	printf("%p  %p\n\n",arr[0],&a);
	printf("%p  %p\n\n",&arr,parr+1);
	
	void (*pf)();		//函数指针,指针
	pf=funA;
	pf();	
	
	void (*pf2[2])()={funA,funB};		//函数指针数组, 数组 
	pf2[0]();
	pf2[1]();
	return 0;
}






评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Victor.Chang

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值