指向2d数组的指针数组



我试图获得一个指向二维布尔值数组的指针数组。如何才能做到这一点?这是一个Arduino(认为他们是C和c++的混合?)

根据你的描述,我想你是在找这样的东西:

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

如果您正在使用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

注意

当你试图分配二维数组时,不要把它们想象成矩阵或表,每个存储一个布尔值。例如,以一个数组int s为例,数组声明为int arr[i][j],第一个"维"的每个元素类型为int*,第二个"维"的每个元素类型为int。所以它实际上是一个"数组的数组"

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

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

你需要最后一个typedef,当然。

如果你想要更少的类型定义和降低可读性:

typedef bool (*TwoDBoolArrPtrArray[10])[10][10];

相关内容

  • 没有找到相关文章