C++ 用数组C改变函数后指针的显示值
当我运行这个程序时,它会给出一系列数字和字母(我猜是一个地址),我哪里出错了?我试图显示最高和最低的数字 intArray是一个由10个数字组成的一维数组,大小为10C++ 用数组C改变函数后指针的显示值,c++,arrays,function,pointers,C++,Arrays,Function,Pointers,当我运行这个程序时,它会给出一系列数字和字母(我猜是一个地址),我哪里出错了?我试图显示最高和最低的数字 intArray是一个由10个数字组成的一维数组,大小为10 void greatAndSmall(int intsAray[], const int SZ, int greatAdd, int smallAdd) //def func { while (x < SZ) { if (intsAray[x] > greatAdd)
void greatAndSmall(int intsAray[], const int SZ, int greatAdd, int smallAdd) //def func
{
while (x < SZ)
{
if (intsAray[x] > greatAdd)
greatAdd = intsAray[x];
else
break;
if (intsAray[x] < smallAdd)
smallAdd = intsAray[x];
else
break;
x = x + 1;
}
}
greatAndSmall(intArray, SIZE, &great, &small); //IN MAIN FUNC
cout << "The smallest of these numbers is: " << small << "\n"; //display smallest
cout << "The largest of these numbers is: " << great; //display greatest
void greatAndSmall(int intsAray[],const int SZ,int greatAdd,int smallAdd)//def func
{
而(xgreatAdd)
greatAdd=intsAray[x];
其他的
打破
if(intsAray[x] cout您编写的代码不是有效的C/C++代码,无法编译。它还存在逻辑问题,即使要编译也无法工作(您使用的break
s是完全冗余的)
只需使用以下代码:
void greatAndSmall (int intsArray [], int sz, int * largest, int * smallest)
{
if (sz < 1) return;
*largest = *smallest = intsArray[0];
for (int i = 1; i < sz; ++i)
{
if (intsArray[i] > *largest) *largest = intsArray[i];
if (intsArray[i] < *smallest) *smallest = intsArray[i];
}
}
或者这个更一般(当然也更复杂)的版本:
模板
自动变大变小(C常量和C)
->std::pair
{
if(c.empty())返回{};
auto-ret=std::make_pair(*c.begin(),*c.begin());
用于(自动常量和v:c)
{
如果(v>ret.first)ret.first=v;
如果(v
这不可能编译<代码>x
未声明&great
和&small1
是指针,但函数需要类型为int
的参数。显示您的真实代码。
// Largest value in first and smallest value in second
std::pair<int, int> greatAndSmall (std::vector<int> const & c)
{
if (c.empty()) return {};
std::pair<int, int> ret (c[0], c[0]);
for (unsigned i = 1; i < c.size(); ++i)
{
if (c[i] > ret.first) ret.first = c[i];
if (c[i] < ret.second) ret.second = c[i];
}
return ret;
}
template<typename C>
auto greatAndSmall (C const & c)
-> std::pair<typename C::value_type, typename C::value_type>
{
if (c.empty()) return {};
auto ret = std::make_pair(*c.begin(), *c.begin());
for (auto const & v : c)
{
if (v > ret.first) ret.first = v;
if (v < ret.second) ret.second = v;
}
return ret;
}