【发布时间】:2013-06-30 03:00:20
【问题描述】:
例如:
using namespace std;
#include <iostream>
void funcOne() {
}
void funcTwo( int x ) {
}
int main() {
void (*ptrOne)() = funcOne;
cout << ptrOne << endl; //prints 1
void (*ptrTwo)( int x ) = funcTwo;
cout << ptrTwo << endl; //prints 1
int (*ptrMain)() = main;
cout << ptrMain << endl; //prints 1
}
有人知道这背后的原因吗?起初我认为这是因为这些函数不存在于内存中,因为我从不调用它们,因此它们永远不会被添加到堆栈中。但即使是指向主函数的指针的值也会打印出 1。
【问题讨论】:
-
它不适合我。在 MSV2012 上,我得到: 011A1230、011A122B、011A12F3 每次打印。
-
那些语句应该打印函数指针地址
-
@Borgleader 哦,它为你打印了什么?也许这只是特定于我的编译器或类似的东西。
-
@billz:为什么?
cout << ...是否处理函数指针类型的参数? -
@billz 我的打印语句正在打印出作为函数内存地址的指针的值。
标签: c++ function-pointers