我正在学习C并遇到了结构问题。结构指针数组 - 覆盖struct
假设我有以下结构:
typedef struct {
int x;
} Structure;
int main (void) {
Structure *structs[2];
for(int i = 0; i < 2; i++) {
Structure s = {i};
structs[i] = &s;
}
for(int i = 0; i < 2; i++) {
printf("%d\n", structs[i]->x);
}
return 1;
}
输出是:
1
1
我不明白为什么新的结构是overring旧的。
这可能是一个愚蠢的问题。但我不明白。
谢谢!
解决:
typedef struct {
int x;
} Structure;
int main (void) {
Structure *structs[2];
for(int i = 0; i < 2; i++) {
Structure *s = (Structure *)malloc(sizeof(Structure));
s->x = i;
structs[i] = s;
}
for(int i = 0; i < 2; i++) {
printf("%d\n", structs[i]->x);
free(structs[i]);
}
return 1;
}
谢谢!我知道了!我将我的代码更改为使用堆作为存储。 – user2221323 2013-05-14 18:47:49