gpt4 book ai didi

在 C 中创建 Mallocate 数组函数

转载 作者:行者123 更新时间:2023-12-04 11:15:16 25 4
gpt4 key购买 nike

我有一个项目,我用 C 语言创建了几个动态的二维整数数组。

我试图通过创建 mallocateArray 函数来减少冗余代码。我可以在没有该功能的情况下使用它。

问题是指针可能很麻烦,出于某种原因,当我尝试使用这种方法时,我遇到了段错误:

这是我得到的:

     void mallocateArray(int ***array, int *row, int *col){
//allocate storage for the array of ints:
*array = (int**)malloc(*row * sizeof(int *));
int i;
for (i = 0; i < *row; i++){
*array[i] = (int*)malloc(*col * sizeof(int));
}
}

我的数组是这样定义的:

     int **matrix1,
int row = 2
int col = 3

mallocateArray(&matrix1, &row, &col);

当我运行它时,出现段错误。所以目前我只是不使用该方法并处理冗余。我试过通过取消引用等方式弄乱指针,但我似乎无法弄清楚。

我希望你们能帮帮我。

这是我的主要方法中有效的代码示例:

      result = (int**)malloc(row1 * sizeof(int *));
int i;
for (i = 0; i < row1; i++){
result[i] = (int*)malloc(col2 * sizeof(int));
}

最佳答案

你很接近。只是缺少一些括号。这一行:

*array[i] = (int*)malloc(*col * sizeof(int));

应该是:

(*array)[i] = malloc(*col * sizeof(int));

注意这些操作顺序!我也去掉了你不必要的石膏。

如果您只是按值传递 rowcol,您的函数看起来就不那么复杂了。示例:

void mallocateArray(int ***array, int row, int col)
{
*array = malloc(row * sizeof(int *));
for (int i = 0; i < row; i++){
(*array)[i] = malloc(col * sizeof(int));
}
}

关于在 C 中创建 Mallocate 数组函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15375304/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com