gpt4 book ai didi

C - 为什么我的合并功能不起作用?

转载 作者:行者123 更新时间:2023-11-30 21:13:19 24 4
gpt4 key购买 nike

我正在尝试为 C 程序创建合并函数,但编译器一直在提示两个问题,我不知道如何解决它们。

First: array type 'int *[20]' is not assignable temp = (int *) malloc ( 20 * sizeof(int));

Second: incompatible pointer to integer conversion assigning to 'int' from 'int *'; dereference with * [-Wint-conversion] a[start+i]=temp[i];

void merge(int* a, int begin, int middle, int end)
{

int* temp[20] = {0};
temp = (int *) malloc ( 20 * sizeof(int));

int i = begin;
int m = middle + 1;

int k = 0;

while(i <= middle && m <= end)
{
if(a[i] <= a[m])
temp[k++] = a[i++];
else
temp[k++] = a[m++];
}

while(i <= middle)
temp[k++] = a[i++];

while(m <= end)
temp[k++] = a[m++];

for(i = 0; i < k; i++)
a[start + i] = temp[i];
free(temp);
}

任何帮助或指示将不胜感激:)

最佳答案

你可以使用这个:

int* temp;
temp=malloca(20*sizeof(int));

在声明访问 temp 指向的元素之后,您可以使用它:例如我们要访问元素 i

int y= (int)(*(temp+i));// the step i equal to size of integer

你可以引用这个概念,重新编写你的代码(最后一个数组是存储数据的内存地址,所以我们可以使用这个数组的起始地址来访问它的不同位置) 元素)

关于C - 为什么我的合并功能不起作用?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41537605/

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