为什么函数指针参数不影响内存大小?

Jam*_*332 2 c++ memory function-pointers sizeof

最近我在查看 gl3w 库的 src 代码。我注意到它为我使用了一种新型结构:a union. 我发现 aunion是多种数据类型存在于同一个地方的一种方式。但是我注意到它在类型之间切换而不重新分配值。它从纯 c 函数指针数组和具有不同参数数量的函数指针结构切换。所以我做了一些测试:

#include <iostream>

typedef void (*PUREPROC)();
typedef void (*ARGSPROC)(int, int *);

int main() {
     std::cout << "PUREPROC's size is: " << sizeof(PUREPROC) << std::endl;
     std::cout << "ARGSPROC's size is: " << sizeof(ARGSPROC) << std::endl;

     return 0;
}
Run Code Online (Sandbox Code Playgroud)

令我惊讶的是,两者都使用了 8 个字节的内存。我理解 gl3w 如何能够在数组和结构之间切换,它们使用相同数量的内存。数组只是一个工具,允许以更简单的方式分配功能。我知道代码有效并理解它们不会消耗不同数量的内存,但我不知道为什么。所以这就是我的问题:为什么函数指针参数不影响内存大小?

dbu*_*ush 9

函数指针仍然只是一个指针,即它包含一个内存地址。

它不包含任何关于指针指向的内容。那是语言的一部分,而不是指针的表示。