【问题标题】:malloc in c but use 2d syntax...compile a no go of answerc 中的 malloc 但使用 2d 语法...编译没有答案
【发布时间】:2012-09-12 17:29:32
【问题描述】:

我试图找到一种分配单个内存块的方法,但使用多维语法,我在 SO 上找到了我正在寻找的确切内容。

malloc in C, but use multi-dimensional array syntax

但是在剪切/粘贴代码之后:

  int (*MAGICVAR)[200] = malloc(400 * sizeof *MAGICVAR);
    MAGICVAR[20][10] = 3; 

弹出此错误消息:“无法使用 void * 类型的数组来初始化 int(*)[200] 类型的实体” 并且将 malloc 转换为“int *”或“int **”也无济于事

我正在使用 vs2010。

【问题讨论】:

    标签: c pointers multidimensional-array malloc


    【解决方案1】:

    首先,使用 C 编译器而不是 C++ 编译器来编译 C 代码,其次,如果必须使用 C++ 编译器,请将 malloc 的返回值强制转换为声明的类型,

    int (*MAGICVAR)[200] = (int(*)[200])malloc(400*sizeof *MAGICVAR);
    

    【讨论】:

    • +1,但如果他必须使用 C++ 编译器,他应该编写 C++ 而不是 C。所以它会是 new int[400][200] 或类似的东西。
    • 是的,必须使用 C++ 编译器。但是使用那个演员“(int(*)[200])”是我无法得到的。不知道为什么这个问题被否决了……但至少它得到了回答!谢谢。
    猜你喜欢
    • 2021-03-29
    • 2011-03-09
    • 1970-01-01
    • 1970-01-01
    • 2013-05-03
    • 1970-01-01
    • 2013-03-11
    • 2011-12-15
    • 1970-01-01
    相关资源
    最近更新 更多