有这样一个简单的 C++
函数指针示例:
#include <stdio.h>
void my_int_func(int x) {
printf("%d\n", x);
}
int main() {
void (*foo)(int);
foo = &my_int_func;
foo(78);
return 0;
}
foo
指向的地址类型是什么?它是否只是从程序起点(my_int_func
函数)开始的 main
函数的相对地址,因此它总是相同的(仅仅因为它是相对的)?
附注
对不起,如果问题很明显/蹩脚,但我只是该主题的初学者......
感谢帮助!
答案 0 :(得分:3)
它是否只是从程序起点(主函数)开始的 my_int_func 函数的相对地址,因此它总是相同的(仅仅因为它是相对的)?
该语言未指定此类详细信息。
一般来说,存储在指针中的地址是绝对的而不是相对的。
他们指向的内容因架构而异。对于某些体系结构,函数指针指向第一条指令。对于其他人,它指向一个函数描述符。还有一些架构将附加信息编码到指针的低位中。