关于函数指针赋值的问题

pcxsvl 发布于 2014/06/23 11:29
阅读 440
收藏 0

我们知道C++中函数指针和其它类型的指针不能互相赋值,但有这种情况:

int fn1(int n,int b);

int(*P)(int n,int b);

int a;

p=fn1;

p(3,4);

a=*P;

这种情况及想运用指针 p给a 赋值是否可以呢?

请各位大神给予指点!^_^



加载中
0
wangxigui
wangxigui

函数指针的调用有2种,且效果等同:函数指针的调用可以不适用解引用符(*),等同于使用解引用符的情况:

1、a=p(3,4);  //跟普通函数调用时一样的

2、a=(*p)(3,4)

#include<iostream>
using namespace std;
int sum(int x, int y){
	return x+y;
}
int main(){
	int (* funp)(int,int);
	funp = sum;
	int res1 = funp(3,4);
	int res2 = (*funp)(2,4);
	cout<<"""res1 = "<<res1<<"  res2 = "<<res2<<endl;
	return 0;
}



0
明月惊鹊
明月惊鹊
强行类型转换是可以的,但是你得到的是函数的地址,指针本来就是地址嘛
pcxsvl
pcxsvl
回复 @pcxsvl : 已经试过了
Jerikc
Jerikc
回复 @pcxsvl : 你确认?试过吗?
pcxsvl
pcxsvl
两类指针之间不允许互相赋值,甚至显示转换也不行。因为从意义上来说函数指针指向的程序的code区是程序运行的指令代码,而数据指针指向data区,stack区和heqp区是程序赖以运行的各种数据。
返回顶部
顶部