当前位置: 首页 > 知识库问答 >
问题:

单malloc调用中的二维数组

白泽语
2023-03-14
int **arrayPtr; 
arrayPtr = malloc(sizeof(int) * rows *cols + sizeof(int *) * rows);

在这种特殊情况下,malloc如何在内部工作?

共有1个答案

冯卓
2023-03-14

2D数组与指向数组的指针数组不同。

int**ArrayPTR不定义2D数组。2D数组如下所示:

int数组[2][3]

注意它是如何索引的:

  • 数组[x]将扩展为*(array+x),因此“向前3个整数的x个数组”。
  • 数组[x][y]将扩展为*(*(array+x)+y),因此“然后y向前转换”。

这里没有直接的指针数组,只有一个连续的内存块。

    null
 类似资料:
  • 当要把一个二维数组中各个数组的和加起来的时候,我已经黔驴技穷了。例如: 函数sumArray可以成功累加 我需要它能够返回另一个数组中有多少数组的总和。原因是因为我需要下一个函数来调用sumArray(): 理论上,sumSort()将根据每个数组中数字的总和对数组进行排序(从最高到最低)。 任何提示都会很棒。提前谢谢你!

  • 问题内容: 我想知道如何在Kotlin中制作可调整大小的二维数组。 C ++示例: 我试过的 但是使用seqList.add()时出现错误 错误:未解决的参考:添加 我在stackoverflow上阅读了有关Kotlin中2d数组的一些问题,但它们与不可调整大小的数组有关或已过时 问题答案: 科特林有独立和接口,解释在这里,例如。是一个,您只需将其另存为变量,即可访问对其进行变异的方法: 还要注意

  • 问题内容: 我对Swift中的2D数组感到非常困惑。让我逐步描述。如果我错了,请您纠正我。 首先; 空数组的声明: 其次,填充数组。(例如,i,j是for循环变量) 最后,在数组中编辑元素 问题答案: 定义可变数组 要么: 或者,如果您需要一个预定义大小的数组(如@ 0x7fffffff在评论中所述): 在位置更改元素 要么 更改子数组 要么 要么 如果在进行这些更改之前,您有3x2的数组,数组中

  • 问题内容: 我想知道如何在Python中声明一个二维数组。 前两个任务工作正常。但是当我尝试做时,出现以下错误: 我在尝试声明二维数组时做任何愚蠢的事情吗? 编辑: 但是我不知道数组(行和列)中的元素数量。 问题答案: 您不会在Python中“声明”数组或其他任何东西。您只需分配一个(新)变量。如果要使用多维数组,只需添加一个新数组作为数组元素。 要么

  • 结论如下:[0,2]->[1,2]->[2,2]->[2,3]->[2,4]->[3,4]->[4,4]->[5,4]->[5,3]->[5,2]->[5,1]->[4,1]->[4,2]->[3,2]->[3,1]->[2,1]->[2,2]->[1,2]->[2,2]->[1,2]->[2,2]->[2,2]->[1,2]->[2,2]->[2,2]->[2,2]->[1,2] 我不明白故障在