是否可以制作一个高度未知但设定宽度的数组?
所以它可以是:
|----------8-----------|
[0][0][0][0][0][0][0][0] |
[1][1][1][1][1][1][1][1] |
[2][2][2][2][2][2][2][2] |
[3][3][3][3][3][3][3][3] \|/
因此它可以像它需要的那样大,但是可以保持8个浮点数。
我觉得声明看起来有点像:
float *array[8] // maybe???
或
float array[8][] // idk???
我不习惯var上的多个指针(我仍然感到困惑)。我经常使用apple的cocoa框架所以我通常会使用NSArray但是我正在构建的东西需要一个基于C的数组而不是一个类。
答案 0 :(得分:4)
试试这个:
float (*array)[8];
...将array
声明为指向浮动的8元素数组的指针。
然后您可以按如下方式为整个事物分配空间:
array = malloc(sizeof(*array) * num_elements);
然后,例如,array[3][0]
将访问第4个8个浮点数组中的第一个浮点数。
答案 1 :(得分:3)
float *array[8];
现在你有一个包含8个float
指针的数组。
对于其中的每一个,当你知道它需要多大时,你需要分配空间:
array[0] = calloc(numMembers, sizeof(float));
如果您后来决定需要更大的特定第二维,则需要重新分配。
答案 2 :(得分:0)
是的,绝对是:
float *p2DArray[8];
for (int i = 0; i < HEIGHT; ++i) {
p2DArray[i] = (float*)malloc(sizeof(float)*WIDTH);
}
答案 3 :(得分:0)
作为函数的参数,您可以要求一个未知高度的二维数组,如此
void foo(int arr[][8])
{
//...do stuff with arr...
}