即使想象到这一点,我的大脑也会变得麻木。如果我的问题有点冗长,请耐心等待。所以我已经将我的问题分成几部分。
1)我们在函数地址开始的位/字节处有什么?我的意思是,在一个整数变量的地址处,我们可视化 1 和 0 的 4 个字节(对于 32 位系统),它们表示二进制中的数字形式。对于字符变量,我们用字符的 ASCII 值可视化单个字节。对于 a,double
我们相应地可视化 8 个字节。但是我到底应该在以函数地址开头的字节处可视化什么呢?我知道调用堆栈是在调用函数时创建的,但是函数本身呢?在它的地址上,我们是否有二进制形式的函数表达式,if
s loops
,等等?代表函数的那些位/字节是否太复杂而无法被人类可视化?说integers
?
2)我们可以sizeof
用于函数吗?为什么或为什么不能?如果我们不知道如何确定分配给函数的大小,那么函数如何具有地址?就像它们有地址一样,它们必须有大小和既然我们有指向函数的指针,那么如何通过指针确定从指针地址开始解释多少字节?毕竟我们可以使用这些指针来调用函数。
请对细节大方。Books 和 Google 在这方面根本没有帮助。