首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >C错误X不是指针;您是想使用'.‘吗?

C错误X不是指针;您是想使用'.‘吗?
EN

Stack Overflow用户
提问于 2022-05-20 06:48:08
回答 1查看 69关注 0票数 0

我正在学习一些C,我有下面的代码,基本上我想做的是在for循环中增加people数组的大小,但是目前我收到了一个错误。你能给我一个简单的解释来修正我的剧本吗?

代码语言:javascript
复制
#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;

收到错误:

代码语言:javascript
复制
 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
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-20 06:55:52

考虑到您知道->的用途:当结构(其左操作数)是指针时,这个错误是很容易解释的。它相当于(*pointer_to_struct).->的正确操作数的类型并不重要。

代码中没有指向结构的指针,因此不能使用->

此外,struct State state = {}是无效的C,初始化程序列表不能为空。您需要设置至少一个元素,例如,您可以执行{0},这将将结构中的所有内容设置为零/空。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72314679

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档