函数指针及函数指针的传参

在学习完数组指针之后,再学习函数指针的的时候,发现函数指针和数组指针之间有着很多的共同点

数组指针 -指向数组的指针就是数组指针 -取地址数组名赋给一个数组得到数组指针

函数指针 -指向函数的指针就是函数指针

用一个函数简单说明函数指针的传参

int Add(int x, int y)
{
	return x + y;
}
int main()
{
	/*int a = 10;
	int* pa = &a;
	*pa = 20;
	printf("%d\n", *pa);*/

	int arr[5] = { 0 };
	//&取地址数组名 -取出的数组的地址
	int(*p)[5] = &arr;//数组指针
	//函数名就是函数的地址
	//&函数名 -取出的是函数的地址吗?
	//成功获得了函数的地址
	//每一个函数都有自己的地址
	/*printf("%p\n", &Add);
	printf("%p\n", Add);*/
	//对于函数来说 &函数名和函数名都是函数的地址

	int (*pf)(int, int) = &Add;
	//通过函数的地址就可以找到函数
	// 对于指针函数进行解引用就可以使用这个函数
	//int ret = (*pf)(2, 3); -标准写法 *便于理解
	int ret = pf(2, 3);
	//int ret = Add(2, 3);
	printf("%d\n", ret);
	         //函数的参数类型int,int
}

1.取函数的地址与取数组的地址相同 &函数名

2.每一个函数都有自己的地址

3.对于函数来说 &函数名和函数名都是函数的地址

4.通过函数的地址就可以找到这个函数,对这个地址进行解引用就可以使用这个函数

5.int (*pf)(int,int)=&Add;  //函数的参数类型要写,名字可写可不写(int x,int y)

6.对这个函数指针的时候 *号可写可不写 (*pf)是标准写法 但是如果写上* 就必须要加上括号,因为加了括号之后才是对这个函数的地址进行解引用,如果没有括号将会对函数返回值进行解引用,发生这个的原因是&函数名和直接使用函数名都是获得这个函数的地址

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值