【问题标题】:assigning 2D array as a struct member将二维数组分配为结构成员
【发布时间】:2022-01-02 17:31:30
【问题描述】:

我需要创建一个以 2D bool 数组为成员的结构,因此我将其设为双指针,如下所示。不,每当我尝试将二维数组对象分配给这个结构成员时,我都会遇到问题,我会收到一个警告,指出它是不可兼容的指针类型。无论如何要分配它(不复制,因为我没有对象只有双指针作为结构成员)

#include <stdlib.h>
#include <stdbool.h>
#include <stdint.h>



typedef struct
{
    bool** object;
}entry_t;

bool testObject[3][6];

entry_t entry =
{
        .object = testObject
};

收到的警告

warning: initialization of '_Bool **' from incompatible pointer type '_Bool (*)[6]' [-Wincompatible-pointer-types]

【问题讨论】:

标签: arrays c multidimensional-array struct


【解决方案1】:

指针指向指针不是数组。它不是二维数组。它不是指向数组的指针。它不能指向数组。

指针到指针的一个非常特殊的用例是让它指向指针数组的第一个成员。这在声明指向字符串的指针数组时非常有用。

bool testObject[3][6]; 是一个二维数组 - 一个数组数组。第一项是bool [6] 类型的数组。为了指向它,您需要一个bool (*)[6] 类型的指针。因此正确的代码是:

typedef struct
{
  bool (*object)[6];
}entry_t;

bool testObject[3][6];

entry_t entry =
{
  .object = testObject
};

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-01-17
    • 1970-01-01
    • 2021-05-13
    • 1970-01-01
    • 2021-06-16
    • 1970-01-01
    相关资源
    最近更新 更多