【发布时间】:2017-02-09 15:47:36
【问题描述】:
我正在尝试在 C 中创建一堆结构变量。 所以可以说我有一个 for 循环运行 3 次并创建三个结构变量。 我的问题是它为什么要创建引用相同内存位置的变量。 代码:
struct arrIndexStruct {
int *arr;
int index;
};
int main() {
int i;
for (i=0; i<3; i++) {
struct arrIndexStruct arrayIndexStruct;
arrayIndexStruct.arr = someArray;
arrayIndexStruct.index = i;
printf("%p\n",(void *)&arrayIndexStruct);
}
}
我得到的输出是:
0x7ffeed84f690
0x7ffeed84f690
0x7ffeed84f690
如果我这样做了
struct arrIndexStruct arrayIndexStruct1;
struct arrIndexStruct arrayIndexStruct2;
printf("%p\n",(void *)&arrayIndexStruct1);
printf("%p\n",(void *)&arrayIndexStruct2);
我会得到
0x7ffc484e64d0
0x7ffc484e64e0
这两种行为有什么区别,for循环不应该有本地范围吗? 谢谢!
【问题讨论】:
-
因为他们没有必要活得比他们的范围更长。你知道什么是自动变量吗?如果没有,请搜索它。
标签: c for-loop struct scope reference