【发布时间】:2016-08-13 04:14:29
【问题描述】:
所以我阅读了几十个将二维数组指针传递给函数以在函数中获取/更改该数组值的示例。但是是否可以在函数内部创建(分配内存)。像这样的:
#include <stdio.h>
void createArr(int** arrPtr, int x, int y);
int main() {
int x, y; //Dimension
int i, j; //Loop indexes
int** arr; //2D array pointer
arr = NULL;
x=3;
y=4;
createArr(arr, x, y);
for (i = 0; i < x; ++i) {
for (j = 0; j < y; ++j) {
printf("%d\n", arr[i][j]);
}
printf("\n");
}
_getch();
}
void createArr(int** arrPtr, int x, int y) {
int i, j; //Loop indexes
arrPtr = malloc(x*sizeof(int*));
for (i = 0; i < x; ++i)
arrPtr[i] = malloc(y*sizeof(int));
for (i = 0; i < x; ++i) {
for (j = 0; j < y; ++j) {
arrPtr[i][j] = i + j;
}
}
}
【问题讨论】:
-
您的代码中没有数组指针,也没有任何二维数组。
-
@Martin 你能告诉我怎么做吗?
-
@Lundin 好的,所以有指向 int 的指针,但它可以用作指向 2Dim 数组的指针,对吧?
-
@Marcin 不,它不能。这是一个常见的错误,您一直在从不良资源中学习。我会发布一个答案。
标签: c arrays function pointers malloc