#include <stdio.h>
main()
{
int i = 5;
printf("%d \n" , &i);
}
重复执行上述程序会导致变量i
的不同地址吗?
答案 0 :(得分:9)
是的,它可以。以下是类似问题的解释:
它表示每次运行程序时都会加载一个不同的(虚拟)地址。这是一个名为Address Space Layout Randomization (ASLR)的功能,是大多数现代操作系统的一项功能。
从这里开始:Why address of a variable change after each execution in C?
答案 1 :(得分:1)
是的,它会改变!
指针用于存储变量的地址,变量的地址可能会在每次执行程序时发生变化。
答案 2 :(得分:0)
是的,每次程序被操作系统加载到虚拟内存中时,大多数情况下,程序的内存地址每次都会重新定位。因此,每次打印变量的地址时,每次运行时都会有所不同。