c - 如何使用 malloc 定义二维数组并将其传递给函数

标签 c arrays multidimensional-array compiler-errors malloc

我想将使用 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/

相关文章:

c - 如何从数组中单独获取索引

java - 如何将 Vector<Vector<String>> 转换为 Object[][]?

c++在数组中读取结构时遇到问题

python - Numpy - 如何从 4 个输入图像构建一个新图像,选择最亮的像素 (max(R+G+B))

c - 重新定义标准名称是未定义的行为吗?

c - 管道、dup2 和 exec()

c - 如何记录使用 VS 2010 执行的代码部分的行号

python - 根据索引获取数组特定行的中位数

c - 地址 sanitizer :DEADLYSIGNAL when trying to use a user input

javascript - 我想从另一个 react native 更改一个类中的静态数组