将二维数组分配为结构成员

assigning 2D array as a struct member

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

#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]

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

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

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

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

bool testObject[3][6];

entry_t entry =
{
  .object = testObject
};