函数指针地址是什么类型的地址?

时间:2021-08-01 15:04:09

标签: c++

有这样一个简单的 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 函数的相对地址,因此它总是相同的(仅仅因为它是相对的)?

附注
对不起,如果问题很明显/蹩脚,但我只是该主题的初学者......

感谢帮助!

1 个答案:

答案 0 :(得分:3)

<块引用>

它是否只是从程序起点(主函数)开始的 my_int_func 函数的相对地址,因此它总是相同的(仅仅因为它是相对的)?

该语言未指定此类详细信息。

一般来说,存储在指针中的地址是绝对的而不是相对的。

他们指向的内容因架构而异。对于某些体系结构,函数指针指向第一条指令。对于其他人,它指向一个函数描述符。还有一些架构将附加信息编码到指针的低位中。