请问如何返回一个函数的地址?
比如:
void func()
{
}
在main()里想得到func()的地址该怎么办?
问题点数:20、回复次数:11Top
1 楼MadLee(风里麦笛)回复于 2005-08-04 13:55:23 得分 4
extern void func()
{ }
main()
{
void (*p)() = func;
p();
}Top
2 楼junguo(junguo)回复于 2005-08-04 13:56:21 得分 4
函数指针!
#include <iostream>
using namespace std;
void test()
{
cout << "test" << endl;
}
void main()
{
void (*f)();
f = test;
f();
system("pause");
}Top
3 楼ducktail()回复于 2005-08-04 14:09:08 得分 0
谢谢楼上各位!Top
4 楼temujen(耳朵)回复于 2005-08-04 14:14:22 得分 3
cout<<func<<endl;
这样就可以打印func()的内存地址
也可以定义一个指针,把func()的内存地址赋给指针保存起来
void (*p)();
p=func;
Top
5 楼ducktail()回复于 2005-08-04 15:44:13 得分 0
cout<<func<<endl;输出的结果是1
提示信息如下:
[Warning] the address of `int func1()', will always evaluate as `true'Top
6 楼zhouqingyuan(浪帆)回复于 2005-08-04 17:06:02 得分 2
void Test()
{
}
int main()
{
cout << &Test <<endl;
return 0;
}
这样是可以得到的。Top
7 楼watermarking(谦虚谨慎)回复于 2005-08-04 18:42:06 得分 3
By using pointer to function.In addition,using & to get the address of a function is optional.Top
8 楼yztommyhc(老六)回复于 2005-08-04 18:48:30 得分 0
我听老师说函数名就是它的指针,
可看
cout<<func<<endl;输出的结果是1
提示信息如下:
[Warning] the address of `int func1()', will always evaluate as `true'.
好象不对啊.有人可以帮忙解释吗??Top
9 楼foochow(无聊,灌水......)回复于 2005-08-04 19:36:51 得分 4
返回函数指针??
看看这个...
void(*signal(int hum,void(*func)(int)))(int);
返回一个函数指针void(*)(int)Top
10 楼ducktail()回复于 2005-08-04 19:58:43 得分 0
to foochow:我的意思是说得到func1()的地址。
在VC.net中,cout<<func<<endl;的结果是对的,但在dev-c++中输出的结果是1。
用三楼的方法在dev-c++是有效的。Top
11 楼foochow(无聊,灌水......)回复于 2005-08-04 20:04:18 得分 0
输出函数名和函数指针都是对的.
Top




