C++:函数指针

函数指针

1.引出

首先要了解下指针是一个地址:
看一下如题

void main()
{
	char a[] = "123";
	char b[] = "123";
	const char c[] = "123";
	const char d[] = "123";
	const char* p1 = "123";
	const char* p2 = "123";
	const char* const p3 = "123";
	const char* const p4 = "123";

	if (a == b)
		cout << "a == b" << endl;
	if (a == c)
		cout << "a == c" << endl;
	if (c == d)
		cout << "c == d" << endl;
	if (p1 == p2)
		cout << "p1 == p2" << endl;
	if (p3 == p4)
		cout << "p3 == p4" << endl;
	if (p1 == p3)
		cout << "p1 == p3" << endl;
}

在这里插入图片描述如图,数组a和b是数组的首地址,所以a、b、c、d都不相同
赋给指针p和q的字符串“123”会被分配到字符创常量区,而指针p和q分别都有一个地址,而这两个地址指向这个字符串常量区,所以p1、p2、p3、p4相同

2.右左法则(往右看一个,再向左看一个,直到没有)

int (*p)[4]---  数组指针--指向数组的指针

int *q[4];---指针数组 --存储指针的数组

int *(*p2[3])(int)--  指针函数指针数组
int *p3(int n)  --  指针函数  返回值为指针的函数
int (*p4)(int,int)--- 函数指针   指向函数的指针

例如代码第三个例子:
1.首先找到变量名p2
2.往右看到“[]”,所以是数组(数组)
3.再往p2左边看是*,所以是指针(指针数组)
4.再往右看(int),所以是函数(函数指针数组)
5.再往左看是*,所以是指针(指针函数指针数组)

3.函数指针特点

函数名–代表函数的入口地址
1.指针指向函数,由指针调用函数
2.函数指针作为另外一个函数的参数
3.函数指针作为另外一个函数的返回值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值