我如何在循环中启动交换功能?

How can i actuate swap func in loop?

for (int i = 0; i < 4; i++) {
    for (int j = 0; j < 4 - i; j++) {
        if (array[j] > array[j + 1]) {
            swap(array[j], array[j + 1]);
        }
    }
}

printf("Descending : ");
for (int k = 4; 0 <= k; k--) {
    printf("%d ", array[k]);
}

我编写了用于降序排列五个类型整数的代码。 有两种方法可以激活它。 第一个是在循环中使用临时交换(如 tmp=a, a=b, b=tmp),第二个是声明交换函数(void swap(int x, int y){int tmp=x, x=y, y=tmp})并在循环中使用此函数。 第一种方式成功,第二种方式失败

我想知道为什么循环中的swap func不能启动

I made code for descending five typed real numbers.

考虑到提供的代码(在 prinf 的调用中使用的转换说明符 %d),您似乎指的是整数而不是实数。

您需要通过指向它们的指针间接引用将交换的对象传递给函数。否则该函数将处理原始对象值的副本..

可以通过以下方式声明和定义函数

void swap( int *a, int *b )
{
    int tmp = *a;
    *a = *b;
    *b = tmp;
}

可以这样称呼

swap( array + j, array + j + 1 );

swap( &array[j], &array[j + 1] );