c语言中, 函数名也称为函数的指针,那函数名是否也占内存空间?

2024-11-27 10:46:01
推荐回答(4个)
回答1:

ShowMenu是一个函数名,可以看到他的值是一个地址。

&ShowMenu是对函数取地址,指向和ShowMenu同样的地址。

可以看出,ShowMenu是占用一个字节的,而作为指针&ShowMenu却占用四个字节。

所以说,函数名占用空间的。

回答2:

首先你上面的话是错误的,函数名是一段指令的入口地址,它是地址常量,不占用内存空间,只是在编译阶段存在于编译器的符号表中,例如函数的入口地址是0x123456,在翻译成机器指令以后,函数名是不存在的其在本质上对应汇编上的jump指令,在执行函数的时候,跳转到0x123456,这个函数名的本质就是这个地址。

回答3:

函数名也称为函数的指针, 函数名是函数的首地址,指针当然占空间

回答4:

经过编译后,函数实际变成了一小段机器代码,并直接通过内存地址进行跳转,本身将不会有名字了,所以不再存在函数名这样的东西。

C语言是高级语言,我们看见的源代码,是给人理解和表达的。CPU能理解的,只能是二进制的机器码。