Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/cplusplus/155.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改变函数后指针的显示值_C++_Arrays_Function_Pointers - Fatal编程技术网

C++ 用数组C改变函数后指针的显示值

C++ 用数组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)

当我运行这个程序时,它会给出一系列数字和字母(我猜是一个地址),我哪里出错了?我试图显示最高和最低的数字

intArray是一个由10个数字组成的一维数组,大小为10

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;
}