我试图获得一个指向二维布尔值数组的指针数组。如何才能做到这一点?这是一个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];