【发布时间】:2016-07-06 16:42:29
【问题描述】:
我只是想从内存的角度了解可能影响函数指针大小的各种原因。
我想强调,我的问题不在于如何使用函数指针以及如何对它们进行类型转换。如果我声明一个函数指针就像
int (*fptr)(int, int);
并为其创建一个变量
fptr fun1;
如果我在 32/64 位机器上运行它,我期望得到的大小是多少?
是否可以通过查看函数指针的声明来确定函数指针的大小,就像我可以告诉 void 指针在 32 位机器上的大小为 4 字节一样。
【问题讨论】:
-
也许您应该强调您实际遇到并试图解决的问题?请阅读the XY problem。
-
仅取决于目标 CPU 架构 - 32 位或 64 位(在某些较旧的系统上为 20、16)
-
你熟悉
sizeof或者PTRDIFF_MAX吗? -
@rango:您可以查看编译器手册 — 或者您可以运行评估
sizeof(void (*)(void))或类似内容的代码。主要两种选择。另一个也是机器上的程序员的传闻,但他们的观点往往有点狭隘。
标签: c pointers function-pointers