C程序中变量的地址

时间:2014-08-01 02:30:45

标签: c

#include <stdio.h>

main()
{
    int i = 5;
    printf("%d \n" , &i);
}

重复执行上述程序会导致变量i的不同地址吗?

3 个答案:

答案 0 :(得分:9)

是的,它可以。以下是类似问题的解释:

  

它表示每次运行程序时都会加载一个不同的(虚拟)地址。这是一个名为Address Space Layout Randomization (ASLR)的功能,是大多数现代操作系统的一项功能。

从这里开始:Why address of a variable change after each execution in C?

答案 1 :(得分:1)

是的,它会改变!

指针用于存储变量的地址,变量的地址可能会在每次执行程序时发生变化。

答案 2 :(得分:0)

是的,每次程序被操作系统加载到虚拟内存中时,大多数情况下,程序的内存地址每次都会重新定位。因此,每次打印变量的地址时,每次运行时都会有所不同。