ShowMenu是一个函数名,可以看到他的值是一个地址。
&ShowMenu是对函数取地址,指向和ShowMenu同样的地址。
可以看出,ShowMenu是占用一个字节的,而作为指针&ShowMenu却占用四个字节。
所以说,函数名占用空间的。
首先你上面的话是错误的,函数名是一段指令的入口地址,它是地址常量,不占用内存空间,只是在编译阶段存在于编译器的符号表中,例如函数的入口地址是0x123456,在翻译成机器指令以后,函数名是不存在的其在本质上对应汇编上的jump指令,在执行函数的时候,跳转到0x123456,这个函数名的本质就是这个地址。
函数名也称为函数的指针, 函数名是函数的首地址,指针当然占空间
经过编译后,函数实际变成了一小段机器代码,并直接通过内存地址进行跳转,本身将不会有名字了,所以不再存在函数名这样的东西。
C语言是高级语言,我们看见的源代码,是给人理解和表达的。CPU能理解的,只能是二进制的机器码。