较小的函数不返回任何值

时间:2018-11-18 20:56:45

标签: c++

我已经编写了一个冒泡排序程序,但该程序可以运行,但是我需要有一个较小的子函数来调用它以切换元素。我的气泡排序如下:

for(int i = N-1; i>0; i--)
        {
            for(int j = 0; j < i; j++){
                if(arr[j]<arr[j+1])
                {
                    temp = arr[j];
                    arr[j] = arr[j+1];
                    arr[j+1] = temp;
                }
            }
        }

我当前的子功能如下:

 void swap2(int x,int x1)
{
    int temp;
    temp = x;
    x = x1;
    x1 = temp;    
}

当我将其包含在代码中时,它不起作用,为了使swap2函数实际交换元素,我该怎么办?

2 个答案:

答案 0 :(得分:0)

如果要在函数外部查看结果,请将void swap2(int x,int x1)更改为void swap2(int &x,int &x1)。这样,您将通过引用传递参数。

答案 1 :(得分:0)

您可以使用如下参考参数:

void swap2(int & x, int & x1)

...使交换函数 modify 传入的值。(您可能会听到这些称为“输入输出参数”的信息,这些参数可以读取和写入通过功能。

这等效于(尽管语法可能更简洁)将指针传递给要修改的值,如下所示:

void swap2(int * x, int * x1)
{
    int temp = *x;
    *x = *x1;
    *x1 = temp;  
}