gpt4 book ai didi

c - C 中的动态双数组

转载 作者:行者123 更新时间:2023-11-30 18:53:01 25 4
gpt4 key购买 nike

我正在尝试使用 malloc 创建一个数组,但我不断收到此错误。

严重性代码描述项目文件行警告 C4047 '=':'DynamicArray *' 的间接级别与 'double **' cStudy 19 不同

严重性代码描述项目文件行警告 C4133“初始化”:不兼容的类型 - 从“int *”到“double *”cStudy 36

 typedef struct
{
double *arrayPointer;
int effectiveSize;
int maximumSize;
} DynamicArray;

void CreateArray(DynamicArray *mArray, int initialSize)
{
//TODO: Use malloc to create an array of the initial size. Assign to the arrayPointer variable

//TODO: Set effective size to 0 and maximum size to the initial size
mArray->arrayPointer = malloc(initialSize *sizeof(double));
mArray->effectiveSize = 0;
mArray->maximumSize = initialSize;
}

void ExpandArray(DynamicArray *mArray, int newSize){

    double* newArray;

mArray->arrayPointer = newArray = (int *)malloc(newSize * sizeof(double));
memcpy(newArray, &mArray[mArray->effectiveSize], mArray->effectiveSize * sizeof(double));


free(mArray->arrayPointer);
//mArray->effectiveSize = 0;
mArray->maximumSize = newSize;

}

更新了代码,但扩展不起作用。

最佳答案

这个作业

mArray = (double *)malloc(initialSize * sizeof(double *));

应该是

mArray->arrayPointer = malloc(initialSize * sizeof(double));

需要进行一些更改:

  • sizeof 应该是 double,而不是 double*
  • 赋值应该是给 mArray->arrayPointer,而不是给 mArray 本身。
  • 在 C 中不需要强制转换为 double*

关于转换的要点也适用于这一行:

double* newArray = (int *)malloc(newSize * sizeof(double));

但请注意,ExpandArray 可能会使用 realloc ,而不是普通的 malloc

关于c - C 中的动态双数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33714694/

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