C++ 较小的函数不返回任何值

C++ 较小的函数不返回任何值,c++,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];

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

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;    
}
void swap2(int & x, int & x1)
void swap2(int * x, int * x1)
{
    int temp = *x;
    *x = *x1;
    *x1 = temp;  
}

当我的代码中有它时,它就不起作用了,为了让swap2函数真正交换我的元素,我必须做些什么呢?

如果您想看到函数外部的结果,请将
void swap2(int x,int x1)
更改为
void swap2(int&x,int&x1)
。这样,您就可以通过引用传递参数。

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

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;    
}
void swap2(int & x, int & x1)
void swap2(int * x, int * x1)
{
    int temp = *x;
    *x = *x1;
    *x1 = temp;  
}
…让您的交换函数修改传入的值。(您可能会听到这些参数被称为“in-out参数”-函数读取和写入的参数

这相当于(尽管语法可能更清晰)传入指向要修改的值的指针,如下所示:

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;    
}
void swap2(int & x, int & x1)
void swap2(int * x, int * x1)
{
    int temp = *x;
    *x = *x1;
    *x1 = temp;  
}

您的
return
语句分别在哪里?您通过引用参数传递的
void swap2(int x,int x1)
没有任何作用,因为您通过值传递参数(意味着副本)。我希望在发布模式下,智能编译器甚至不会调用swap2()。只需使用
std::swap
…您认为
swap(1,2)怎么样;
行吗?让代码中的所有1都像2,所有2都像1?