【发布时间】:2017-08-26 19:39:49
【问题描述】:
谁能告诉我为什么 struct 中的变量会被覆盖?
输出是:
Buffor is: 1.name , struct is: 1.name
Buffor is: 2.name , struct is: 2.name
Buffor is: 3.name , struct is: 3.name
3.name
3.name
3.name
int i = 1;
char buffor[100];
int n = 3;
struct person * data;
data = (struct person *) malloc(n * sizeof(struct person));
while (i <= n) {
snprintf(buffor, sizeof(buffor), "%d.name", i);
data[i - 1].firstname =buffor;
printf("Buffor is: %s , struct is: %s \n", buffor, data[i - 1].firstname);
i++;
}
for (int i = 0; i < n; i++) {
printf("%s \n", data[i].firstname);
}
return 0;
}
【问题讨论】:
-
了解
struct person的实际定义方式可能会有所帮助。 -
难道
firstname只是一个转储指针? -
而且这看起来更像 C,而不是 C++。请决定,这是两种不同的语言。