【发布时间】:2013-06-17 01:08:33
【问题描述】:
我最近参加了一次面试,他们让我编写一个程序来为二维数组(i=3 和 j=2)动态分配内存
【问题讨论】:
-
这不是问题。这是 Facebook 状态更新。
标签: c dynamic-arrays
我最近参加了一次面试,他们让我编写一个程序来为二维数组(i=3 和 j=2)动态分配内存
【问题讨论】:
标签: c dynamic-arrays
int *a = (int*)malloc(i*j*sizeof(int));
你可以通过a[k*i+l];获得a[k][l]
【讨论】:
你们中的一些人会讨厌这个,但它是我的最爱。主要优点是它可以通过单个free 取消分配,并且仍然允许通过A[r][c] 进行访问。
#include <stdlib.h>
int main(void)
{
int num_row = 3, num_col = 2, r;
int ** A;
A = malloc(num_row*(sizeof(*A)+num_col*sizeof(**A)));
for (r = 0; r < num_row; r++)
{
A[r] = (int*)(A+num_row)+r*num_col;
}
/* Accessing element at row r and column c is through:
*
* A[r][c].
*/
free(A);
return 0;
}
【讨论】:
int i = 3;
int j = 2;
int** a = malloc(i * sizeof(int*));
for (unsigned int k = 0; k < i; k++) {
a[k] = malloc(j * sizeof(int));
}
// Now you can use it.
a[0][0] = 0;
a[2][1] = 3;
您在提问之前没有尝试搜索 SO 问题数据库吗?
【讨论】: