Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/fortran/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
指针错误C_C - Fatal编程技术网

指针错误C

指针错误C,c,C,我需要为学校写这段代码。它必须搜索数组的最小值和最大值。我得到一个错误: 从类型“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

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

从类型“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;
}
#包括
void minmax(双坟墓[],双*迷你,双*最大){
int i;
迷你=&坟墓[0];
maxi=&坟墓[0];
对于(i=1;i*maxi){
maxi=&坟墓[i];
}

如果(i)要替换此行:

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

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

PS:通常,在将数组传递给函数时,必须将数组的大小与数组一起传递。您已经将数组的大小硬编码到函数中,在这种情况下效果很好。将来,请记住将数组与其大小一起传递;这是很好的C编码实践

在评论后编辑

以下是函数,带有注释以指示要在函数中进行的更改:

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];
        }
    }
}
void minmax(双坟墓[],双*迷你,双*最大){
int i;
*mini=坟墓[0];//在此处更改;原始:mini=&坟墓[0];
*maxi=坟墓[0];//在此处更改;原始:maxi=&坟墓[0];
对于(i=1;i*maxi){
*maxi=坟墓[i];//在此处更改;原始:maxi=&tomber[i];
}

如果(墓穴[i]hello的可能副本现在再次运行,但返回一个gorgeus愚蠢值:0.00000000 11911148967105177000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000。
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];
        }
    }
}