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...
}