1

我正在尝试获取指向二维布尔数组的指针数组。如何做到这一点?这是针对 Arduino 的(认为它们是 C 和 C++ 的混合体?)

4

3 回答 3

5

根据您的描述,我认为您正在寻找类似的东西:

bool (*arr[K])[M][N];

它分解为

       arr                -- arr
       arr[K]             -- is a K-element array
      *arr[K]             -- of pointers
     (*arr[K])[M]         -- to M-element arrays
     (*arr[K])[M][N]      -- of N-element arrays
bool (*arr[K])[M][N]      -- of bool
于 2013-03-07T17:48:24.947 回答
2

如果您使用的是 C++,并且不想从声明中输入大小,则可以通过动态分配来实现。

int first_dim, second_dim;
// determine dimensions somewhere inside code

// create array of pointers to booleans
bool** arr[10];
for(i = 0; i < 10; i++){
    arr[i] = new bool*[first_dim];
    for(j = 0; j < first_dim; j++){
        arr[i][j] = new bool[second_dim];
    }
}

确保您delete使用完所有阵列。

笔记

当您尝试分配二维数组时,不要将它们视为矩阵或表,每个都存储一个布尔值。例如,以ints 组成的数组,声明为 的数组int arr[i][j],第一个“维度”中的int*每个元素都是类型,第二个“维度”中的每个元素都是类型int。所以它实际上是一个“数组数组”,如果你愿意的话。

于 2013-03-07T18:16:41.590 回答
0

指向二维布尔数组的指针数组看起来像这样(在 C 和 C++ 中 - 选择一个,它们不是同一种语言,也不是混合语言):

 typedef bool TwoDBoolArr[10][10];
 typedef TwoDBoolArr *TwoDBoolArrPtr;
 typedef TwoDBoolArrPtr TwoDBoolArrPtrArray[10];

当然,你需要最后一个typedef

如果您想要更少的 typedef 并降低可读性:

typedef bool (*TwoDBoolArrPtrArray[10])[10][10];
于 2013-03-07T17:46:48.920 回答