gpt4 book ai didi

c - 指针错误C

转载 作者:行者123 更新时间:2023-11-30 20:02:07 25 4
gpt4 key购买 nike

我需要为学校编写这段代码。它必须搜索数组的最小值和最大值。我收到错误:

从“double”类型分配给“double *”类型时出现不兼容的类型

我怎样才能让它发挥作用?

#include<stdio.h>

void minmax(double tomb[], double* mini , double* maxi) {
int i;
mini=&tomb[0];
maxi=&tomb[0];
for(i=1; i<10; i++){
if(tomb[i]>*maxi){
maxi=&tomb[i];
}
if(tomb[i]<*mini){
mini=&tomb[i];
}
}
}


int main(void) {
double t[] = {1.2, 2.3, 6.1, -3, -2.7, 2.7, 11.11, -20, 0.23, 4.1};
double min, max;
minmax(t, double* min, double* max);
printf("%lf\n%lf\n", min, max);
return 0;
}

最佳答案

您要替换此行:

minmax(t, double* min, double* max);

与:

minmax(t, &min, &max);

使用&意味着您正在传递变量的地址,这是函数minmax所期望的(因为它使用指针,所以它期望地址)。

PS:通常,当你将数组传递给函数时,你必须将数组的大小与数组一起传递。您已将数组的大小硬编码到函数中,这在本例中效果很好。以后,请记住传递数组及其大小;这是很好的 C 编码实践。

OP评论后编辑

这是函数,其中带有注释来指示函数中要进行的更改:

void minmax(double tomb[], double* mini , double* maxi) {
int i;
*mini=tomb[0]; // change here; original: mini=&tomb[0];
*maxi=tomb[0]; // change here; original: maxi=&tomb[0];
for(i=1; i<10; i++){
if(tomb[i]>*maxi){
*maxi=tomb[i]; // change here; original: maxi=&tomb[i];
}
if(tomb[i]<*mini){
*mini=tomb[i]; // change here; original: mini=&tomb[i];
}
}
}

关于c - 指针错误C,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23814272/

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