我正在尝试获取指向二维布尔数组的指针数组。如何做到这一点?这是针对 Arduino 的(认为它们是 C 和 C++ 的混合体?)
问问题
6308 次
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
使用完所有阵列。
笔记
当您尝试分配二维数组时,不要将它们视为矩阵或表,每个都存储一个布尔值。例如,以int
s 组成的数组,声明为 的数组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 回答