Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C中的2d数组。固定宽度但未知高度?_C_Arrays_2d - Fatal编程技术网

C中的2d数组。固定宽度但未知高度?

C中的2d数组。固定宽度但未知高度?,c,arrays,2d,C,Arrays,2d,是否可以制作一个高度未知但宽度设定的数组 所以它可以是这样的: |----------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??? 或 我不

是否可以制作一个高度未知但宽度设定的数组

所以它可以是这样的:

|----------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???

我不习惯在一个变量上使用多个指针(我仍然感到困惑)。我经常使用apple的cocoa框架,所以我通常会使用NSArray,但我正在构建的东西需要基于C的数组,而不是类

float *array[8];
现在您有了一个由8个
float
指针组成的数组

对于其中的每一个,当您知道空间需要有多大时,需要分配空间:

array[0] = calloc(numMembers, sizeof(float));
如果您后来决定需要一个更大的特定第二维度,则需要重新分配

是的,它肯定是:

  float *p2DArray[8];

  for (int i = 0; i < HEIGHT; ++i) {
    p2DArray[i] = (float*)malloc(sizeof(float)*WIDTH);
  }
float*p2DArray[8];
对于(int i=0;i
摘自

试试这个:

float (*array)[8];
…它将
array
声明为指向浮点8元素数组的指针

然后,您可以按如下方式为整个项目分配空间:

array = malloc(sizeof(*array) * num_elements);

然后,例如,
数组[3][0]
将访问8个浮点的第4个数组中的第一个浮点。

作为函数的参数,您可以要求一个高度未知的2d数组,如下所示

void foo(int arr[][8])
{
     //...do stuff with arr...
}

你说的高度和宽度是什么意思?数组[width][height]或数组[height][width]?因为我的大脑经常不能很好地与手指沟通:)Thx-修复。@BrianRoach Dude我一直在这个网站上看到你。我要感谢你们为我和这个社区的其他成员提供的所有帮助。我希望我能挑两个答案。再次感谢。谢谢:)我通过帮助别人学到了很多。也帮助我保持一些技能,使我完全不工作,我不使用日常工作(如我的C)。非常正确:P我改变它一看到C++代码LOL,太多的C++是坏的C编程。@ Serdali我知道你的感觉。我花了6个月的时间做组装,当我回到C时,我觉得指针太复杂了。谢谢。我从来没有想到会使用括号。正如我对布赖恩说的,我希望我能选择两个答案。非常感谢。
void foo(int arr[][8])
{
     //...do stuff with arr...
}