原来c++函数的指针和函数名字指向的是一个地址...

#include <iostream>
#define USINGSTD(x) using std::x;

USINGSTD(cout)
USINGSTD(endl)

int* pFUNC() {
	cout << "this is a func";
	return 0;
};

int main() {
	int a[] = {1,2};
	cout << a<<" "<<&a;  // 00AAF998 00AAF99800B812F8  a和&a的不一样,我还可以理解.. 
	cout<<*pFUNC<<endl;   // 00B012F8
	cout << pFUNC<<endl;  // 00B012F8
	cout << &pFUNC<<endl; //00B012F8   这三个是一个地址,我是万万没想到
	}
//这个道理出现在函数指针里
int functionA(int,int);
int main() {

	int ((*p)(int,int)) ;
	p = functionA;
	//这里不像常规的我们认为要加 & ,而是名字直接进去
	//p是 int(*)(int,int)类型,functionA是int(*)(int,int)类型
	//必须深入理解这点 什么是类型 什么是变量名,要多看看ISO的标准前面的那部分
	std::cout << ((*p)(1, 2));//3
	std::cout << (p(1, 2));//3
	//函数值和指针区分不明显
}
int functionA(int A,int B) {

	return A + B;
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值