首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

函数指针的地址有关问题

2012-02-26 
函数指针的地址问题VC++6.0环境:#include iostreamusing namespace stdint func(int i){coutiin f

函数指针的地址问题
VC++6.0环境:

#include <iostream>
using namespace std;

int func(int i)
{
cout<<i<<"in func"<<endl;
return 0;
}

int main()
{
int (*p)(int);
p=func;
cout<<p<<endl;
cout<<func<<endl;
cout<<*p<<endl;
cout<<&func<<endl;
cout<<&p<<endl;
return 0;
}
前4个的输出都是一样的地址...高手给个解释啊..
p(2)和(*p)(2)是等效的..为什么呀..


[解决办法]
函数指针名字=*函数指针=函数名字=函数地址
这是规定.
&p取得的是p变量本身的地址.他不同与p.
[解决办法]
请允许我对你的程序作如下注释:

#include <iostream > 
using namespace std; 

int func(int i) 

cout < <i < <"in func" < <endl; 
return 0; 


int main() 

int (*p)(int); 
p=func; 

//cout对于指针变量是打印其值,而不是其地址,所以此处打印的就是func的地址:
cout << p << endl;

//不言而喻,语言特性是这样:提领func函数指针: 
cout << func << endl;

//语言特性规定,对函数指针的解引用,只能是函数所在的地址,即函数指针: 
cout << *p << endl; 

//等同于func-提取函数地址:
cout << &func << endl;

//所以,上述四条语句,效果等同!
 
cout << &p << endl; 
return 0; 

热点排行