我想将使用 malloc 定义的二维数组传递给函数。 首先,我使用 blog post 中的代码定义数组.
int** Make2DIntArray(int arraySizeX, int arraySizeY) {
int** theArray;
theArray = (int**) malloc(arraySizeX*sizeof(int*));
for (int i = 0; i < arraySizeX; i++)
theArray[i] = (int*) malloc(arraySizeY*sizeof(int));
return theArray;
}
int main(){
int** myArray = Make2DIntArray(nx, ny);
}
然后我可以将它用作 myArray[i][j]。 之后,我想将这个数组传递给一个函数。我试着像这样传递它:
function(myArray); //function call
//function
void function(int myArray[][]){
//function code goes here
}
但这是错误的。问题是数组的大小每次都不同。我还尝试为数组的列定义一个最大大小并像这样使用它:
#define COLUMNMAX 100
function(myArray); //function call
//function
void function(int myArray[][COLUMNMAX]){
//function code goes here
}
但是我得到了错误:
type of formal parameter 1 is incomplete.How can i pass it?
最佳答案
参数是一个int**
而且你不必强制转换malloc的返回值,只要检查它是否不为NULL
但是因为你使用了malloc,所以当你不再需要它的时候不要使用free
关于c - 如何使用 malloc 定义二维数组并将其传递给函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17236064/