gpt4 book ai didi

c - 在二维数组中赋值时出错

转载 作者:太空宇宙 更新时间:2023-11-04 01:03:31 26 4
gpt4 key购买 nike

double** Make2DDoubleArray(int arraySizeX, int arraySizeY) {
double** theArray;
theArray = (double**) malloc(arraySizeX*sizeof(double*));
for (int i = 0; i < arraySizeX; i++)
{
theArray[i] = &(malloc(arraySizeY*sizeof(double)));
memset(&(theArray[i]), 0, arraySizeY*sizeof(double));
}
return theArray;
}

我需要在 C 中使用 malloc 创建一个二维数组。我使用了上面的方法。

当我使用 Matrix[1,2] = 2.0; 访问返回的数组(让我们称它为 Matrix)时,它会抛出一个错误:

cannot convert ‘double’ to ‘double*’ in assignment

但我不明白为什么 Matrix[1,2] 是指针而不是值?Matrix 是指针的指针,Matrix[i] 是指向 double 列表的指针,所以 Matrix[i ,j] 应该是 double 而不是 double *!

最佳答案

Matrix[i, j]Matrix 中索引为 i, j 的项,是逗号运算符的结果在值 ij 上,也就是 Matrix[j]。您可能是指 Matrix[i][j]

除此之外:

  • 不要强制转换 malloc 的返回值:

    double** theArray = malloc(arraySizeX * sizeof(double));
  • 您使用了错误的sizeof;它是 sizeof(double*):

    double** theArray = malloc(arraySizeX * sizeof(double*));
  • 这没有意义;删除 &:

    theArray[i] = &(malloc(arraySizeY*sizeof(double)));
  • 这是错误的;再次放下 &:

    memset(&(theArray[i]), 0, arraySizeY*sizeof(double));

关于c - 在二维数组中赋值时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29779655/

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