【问题标题】:malloc memory allocating for the struct in C problem [duplicate]为C问题中的结构分配malloc内存[重复]
【发布时间】:2020-11-13 20:37:41
【问题描述】:

我确实有一个结构

struct xyz {
    double x, y;
} *res;

然后我分配内存

 res = malloc(100 * sizeof(struct xyz));

但我收到一个错误 “从‘void’到‘main(int, const char)::xyz的无效转换”***

我也尝试将我的 malloc 更改为:

res = (double*)malloc(100 * sizeof(struct xyz));

但它也没有工作

出了什么问题,它应该是什么样子?

【问题讨论】:

  • 这是因为您试图将代码编译为 C++
  • 对不起,您发布的错误消息是关于main()函数的,您发布的代码中没有voidmainconst char等。您是否检查过编译器抱怨的文件行?您发布错误消息好像解决您的问题并不重要,但我认为恰恰相反。请阅读错误消息并发布与该错误消息相关的内容(并发布一个完整的、可测试的程序来显示问题——在这种情况下是您从编译器得到的错误)

标签: arrays c struct c99


【解决方案1】:

试试这个:

typedef struct xyz {
    double x;
    double y;
} Res;

然后:

Res* res = malloc(100 * sizeof(Res));

这有很多好处。 Res 现在可以在整个程序中使用,这提供了比您最初建议的更好的代码清晰度。

res 可以像任何其他数组一样被索引。

Res secondRes = res[1];

确保您正在编译为 C。

【讨论】:

    【解决方案2】:

    尝试像这样分配内存。

    res = (struct xyz*)malloc(100 * sizeof(struct xyz));
    

    【讨论】:

      猜你喜欢
      • 2015-11-09
      • 1970-01-01
      • 2015-01-05
      • 1970-01-01
      • 2014-04-24
      • 2021-01-26
      • 2020-11-01
      • 2021-05-29
      • 1970-01-01
      相关资源
      最近更新 更多