首页 > 解决方案 > 为什么变量地址不变-c编程

问题描述

我在 for 循环的每次迭代中声明一个变量x。为什么地址x不变?

int main(void) {
  for (int i = 0; i < 5; i++) {
    int x = i;
    printf("x = %d", x);
    printf(" &x = %d", &x);
    printf("\n");
  }
  return EXIT_SUCCESS;
}
output

x = 0 &x = 1508435624                                                                      
x = 1 &x = 1508435624                                                                      
x = 2 &x = 1508435624                                                                      
x = 3 &x = 1508435624                                                                      
x = 4 &x = 1508435624    

如果我想要一个指向 int, 的指针数组,int ** arr是否需要单独初始化变量,因为地址在 for 循环中不会改变,例如


int num0 = 0;
int num1 = 1;
int num2 = 2;

int * arr[] = {&num0, &num1, &num2};

有没有更简单的方法来完成这项任务?

谢谢!

标签: c

解决方案


局部变量每次实例化时都不需要具有不同(或相同)的地址。

无论如何,如果您打算在循环结束时保存该变量的地址,您将遇到未定义的行为,因为您的指针将指向不再使用的内存。

您需要为每个数组成员动态分配内存,以使它们不同,并避免创建单独的变量。


推荐阅读