的确用的是间接寻址。 看以下代码: #include <iostream> int main(){ int num = 5; int *ptr = # std::cout << *ptr << std::endl; return 0; } g++编译以后,用IDA打开分析: 注意mov eax, [eax]那一行,这不就是间接寻址嘛? 当然,如果编译器很确定这个地址的内容,就可能做一些优化,直接把值填入你的变量中(比如对地址用常数传播)。这时候就没有间接寻址了。
的确用的是间接寻址。
看以下代码:
g++编译以后,用IDA打开分析:

注意
mov eax, [eax]
那一行,这不就是间接寻址嘛?当然,如果编译器很确定这个地址的内容,就可能做一些优化,直接把值填入你的变量中(比如对地址用常数传播)。这时候就没有间接寻址了。