首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ >

C++中的函数名有关问题

2012-11-08 
C++中的函数名问题C++中的函数名作为常量存放在哪? 为何函数名和函数名取地址(&)是一样的,在这一点上是不

C++中的函数名问题
C++中的函数名作为常量存放在哪? 为何函数名和函数名取地址(&)是一样的,在这一点上是不是不能说它等同于指针(因为指针取地址是指针的地址)?

[解决办法]
函数涉及的是函数调用的入口地址,本身不存在取地址一说,只是为了兼容取地址和解引用这种习惯用法,规定了取地址之后还是同一个入口地址。
[解决办法]
函数名没有常量表,在编译器处理过程中,所有的函数都会被解析成地址调用。它不需要进行函数查表的工作。

例如:
void fun() {...}

int main() {
fun();
return 0;
}

上述代码被编译后,首先会有一段对应于fun的代码存留在内存中,程序生成后,每个函数都会在固定的位置被加载,即函数地址是固定的。所以编译器可以“聪明”地认为,所有用到fun函数的地方,只需要直接call 一下它的地址就可以了。

call是汇编指令,用于调用子进程(即我们所说的方法)。

热点排行