执行具有转换错误的过程

Executing a procedure with conversion error

本文关键字:过程 错误 转换 执行      更新时间:2023-10-16
#include<iostream>
using namespace std;
void MinMax(int tab[],int* min, int& max)
{
int size=0;
for(int i=0; i<4095; i++)
{
if(tab[i]==-1) break;
size++;
}
size=(int)size;
for(int passes=0; passes<size; passes++)
{
if(tab[passes]<tab[passes+1])
{
swap(tab[passes],tab[passes+1]);
};
}
min=tab[size];
cout<<min<<" ";
for(int passes=0; passes<size; passes++)
{
if(tab[passes]>tab[passes+1])
{
swap(tab[passes],tab[passes+1]);
};
}
max=tab[size];
cout<<max<<" ";
}
int main()
{
int z1[]= {10,2,5,7,4,-1};
int min, max;
MinMax(z1,min,max);
for(int i=0; i<7; i++)
{
cout<<z1[i]<<" ";
}
}

我需要在主函数的 z1 中写入一些值,然后执行 MinMax。它应该从数组中找到最小和最大的值。第一个问题是当我尝试编译它时,存在关于将 int 转换为 int* 的 en 错误,我无法将 tab[size] 分配给 min。在执行 MinMax 时,我还应该使用 2 个 intiger,但它不起作用。

void MinMax(int tab[],int* min, int& max)
//                       ^

这似乎是一个错字。

考虑到你传递论点的方式,以及你在MinMax内部使用它的方式,我怀疑你的意思是int&,就像你对max一样。

您得到的错误是因为您将整数分配给指针变量,方法是执行min=tab[size];其中min是int *类型,tab[size]是int

为了纠正此行为,您应该将 tab[size] 分配给 min 使用尊重运算符指向的值:*min = tab[size]

这应该可以纠正您的错误。