我有3个问题。
答案 0 :(得分:1)
我总是喜欢使用双指针将2D数组传递给任何函数。
例如,如果我创建的函数说int** allocate(int** memptr, int row, int col)
,那么我将实现如下函数
int** allocate(int** memptr, int row, int col){
int i;
memptr = (int**)malloc(sizeof(int*) * row); // for how many 1D array you need
for(i = 0; i < row; i++)
memptr[i] = (int*)malloc(sizeof(int) * col); // allocating memory for each 1D array
return memptr;
}
我会像这样调用函数
int** memptr = NULL;
int row, col;
scanf("%d%d", &row, &col);
memptr = allocate(memptr, row, col);
还有其他几种方法可以做到这一点,但我最喜欢这个的原因是它是如此离散,代码本身说明了使用指针指向来分配内存的实际工作或过程。一旦你分配了你想存储多少指针并为memptr = (int**)malloc(sizeof(int*) * row);
分配内存,你就迭代一个循环并再次为每个指针分配内存memptr[i] = (int*)malloc(sizeof(int) * col);
这是我亲眼见过和使用过的最佳方式。