【发布时间】:2018-09-06 06:35:13
【问题描述】:
1 中的三个问题。
-
如果我有一个二维数组 -
int array_name[num_rows][num_columns]所以它由 num_rows 数组组成 - 每个数组都是大小 = num_columns 的数组。它使用指针数组的等效表示是 -
int* array_name[num_rows]-所以 [num_rows] 给出的索引仍然显示一维数组的数量 - 在某处使用 malloc 我们可以将每个一维数组的大小指定为 num_columns。那正确吗?我看到一些文字告诉
int* array_name[num_columns]在这种情况下索引不会切换吗?
-
对于 ID 数组,我会动态指定大小 -
int *p; p = (int*) malloc (size * sizeof(int))对于二维数组,我是指定整个二维数组的大小还是在 malloc 中指定一个一维数组的大小 -
int*p [row_count]; p = (int*) malloc (row_count * column_count * sizeof(int))或
p = (int*) malloc (column_count * sizeof(int))我认为应该是第二个,因为 p 是指向一维数组的指针,而 p+1 是指向一维数组的指针等。请澄清。
-
对于问题 2 - 如果 p 被定义为 -
int **p;而不是int * p[row_count]那么 malloc 将如何使用呢?我觉得应该是——p = (int*) malloc (row_count * column_count * sizeof(int))
请更正、确认、改进。
【问题讨论】:
-
语言标签和代码格式请
-
见this答案
-
核心问题是这两种形式不等价。 Correctly allocating multi-dimensional arrays 的可能重复项。
标签: c arrays pointers multidimensional-array