我正在学习一些C,我有下面的代码,基本上我想做的是在for循环中增加people数组的大小,但是目前我收到了一个错误。你能给我一个简单的解释来修正我的剧本吗?
#include <stdio.h>
struct Person {
int id;
};
struct State {
struct Person people[0];
};
int main() {
printf("Hello, world!");
struct State state = {};
for(int i = 0; i < 10; ++i) {
struct Person person = {};
person.id = i;
state->people[i] = person;
}
return 0;收到错误:
clang-7 -pthread -lm -o main main.c
main.c:19:12: error: member reference type 'struct State' is not
a pointer; did you mean to use '.'?
state->people[i] = person;
~~~~~^~
.
1 error generated.
exit status 1发布于 2022-05-20 06:55:52
考虑到您知道->的用途:当结构(其左操作数)是指针时,这个错误是很容易解释的。它相当于(*pointer_to_struct).。->的正确操作数的类型并不重要。
代码中没有指向结构的指针,因此不能使用->。
此外,struct State state = {}是无效的C,初始化程序列表不能为空。您需要设置至少一个元素,例如,您可以执行{0},这将将结构中的所有内容设置为零/空。
https://stackoverflow.com/questions/72314679
复制相似问题