为什么我得到相同的地址价值?

use*_*777 5 c

#include<stdio.h>
#include<conio.h>

void vaibhav()
{
    int a;
    printf("%u\n",&a);
}

int main()
{
    vaibhav();
    vaibhav();
    vaibhav();
    getch();
    return 0;
} 
Run Code Online (Sandbox Code Playgroud)

每次我得到变量地址的相同值a.

这个编译器是否依赖?我正在使用dev c ++ ide.

bar*_*nos 6

尝试从不同的堆栈深度调用它,您将获得不同的地址:

void func_which_calls_vaibhav()
{
    vaibhav();
}

int main()
{
    vaibhav();
    func_which_calls_vaibhav();
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

函数中局部变量的地址取决于调用函数时执行点的堆栈状态(SP寄存器的值).

在您的示例中,每次vaibhav调用函数时,堆栈的状态都完全相同.


hac*_*cks 4

没有必要。您可能会也可能不会获得相同的地址值。并用%p之代替。

 printf("%p\n", (void *)&a);
Run Code Online (Sandbox Code Playgroud)