指针错误C
我需要为学校写这段代码。它必须搜索数组的最小值和最大值。我得到一个错误: 从类型“double”分配给类型“double*”时,类型不兼容 我怎样才能让它工作指针错误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
#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];
}
}
}