用C置换函数

1. 思想置换

其实, 我们必须建立程序, 置换函数来交换元件的值, 如序程序是一个典型的.

要排列 2 号码, 可以想像我们一样 2 玻璃. 柠檬水容器的玻璃, B罩杯农药瓶. 我们如何进入杯柠檬汁B和移动到罩杯农药? 只需使用更 1 巾帼杯C罩杯,并开始移动:

  • B1: 倒入柠檬杯到C杯. =>的中空, C包含柠檬
  • B2: 倾农药B杯杯A =>乙空, 农药
  • B3: 倒入杯子杯柠檬C B => B包含柠檬.
  • 行. 农药小时, 含B柠檬水.

排列

怎么换 2 一杯水

2. 排列码

不要在编程一样,我们将交换的价值 2 变量.

// e.g about swap in C - code by nguyenvanquan7826
#include <stdio.h>

int main()
{
    int a, b;
    printf("Nhap 2 so a, b:\n");
    scanf("%d%d", &a, &b);

    printf("Ban da nhap:\na = %d \nb = %d\n", a, b);

    int temp = a;
    a = b;
    b = temp;

    printf("Sau khi hoan vi:\na = %d\nb = %d\n", a, b);
    return 0;
}

结果:

进口 2 所以, B:
3
6

您已进入:
A = 3
B = 6

置换后:
A = 6
B = 3

行. 现在尝试分成置换函数眼冒金星:

3. 用C置换函数

// e.g about swap in C - code by nguyenvanquan7826
#include <stdio.h>

void hoanvi(int a, int b) 
{
    int temp = a;
    a = b;
    b = temp;
}

int main()
{
    int a, b;
    printf("Nhap 2 so a, b:\n");
    scanf("%d%d", &a, &b);

    printf("Ban da nhap:\na = %d \nb = %d\n", a, b);

    hoanvi(a, b);

    printf("Sau khi goi ham hoanvi:\na = %d\nb = %d \n", a, b);
    return 0;
}

结果:

进口 2 所以, B:
3
6

您已进入:
A = 3
B = 6

通话hoanvi后:
A = 3
B = 6

哦, 为什么我们没有结果置换?

有了这个程序,我们建立 1 排列函数改变之间的位置 2 端子a和b, 然而,我们已使用的值应取的值和b不发生变化,或者换句话说,它们是不相同的置换.

你明白引用,即函数调用传递的值 Honvi(该, B) a和b的立即值 (3 和 6) 被包括在函数,而不是变量a, 乙方应转, B的,我们并没有改变函数结束时.

正确的代码如下所示:

// e.g about swap in C - code by nguyenvanquan7826
#include <stdio.h>

void hoanvi(int *a, int *b) 
{
    int temp = *a;
    *a = *b;
    *b = temp;
}

int main()
{
    int a, b;
    printf("Nhap 2 so a, b:\n");
    scanf("%d%d", &a, &b);

    printf("Ban da nhap:\na = %d \nb = %d\n", a, b);

    hoanvi(&a, &b);

    printf("Sau khi goi ham hoanvi:\na = %d\nb = %d \n", a, b);
    return 0;
}

结果:

进口 2 所以, B:
3
6

您已进入:
A = 3
B = 6

置换后:
A = 6
B = 3

上面我们建立与下巴hoanvi 2 理由是 *a*b INT. *a*b 即指针a和b指针. 在我们写的函数体 *a, *b (首席执行官: int temp = *a) 再签收 * 表示指针的值.

因为给我们打电话,即传送变量的地址时,该函数指针应使用 hoanvi(&a, &b) , 这里的标志 & 取变量a和变量b的地址.

4. C ++函数排列在

如果你写C ++ (用的.cpp结尾的文件) 他们可以写的内容更容易一些排列如下.

// e.g about swap in C - code by nguyenvanquan7826
#include <stdio.h>

void hoanvi(int &a, int &b)  // only in C++, file .cpp
{
    int temp = a;
    a = b;
    b = temp;
}

int main()
{
    int a, b;
    printf("Nhap 2 so a, b:\n");
    scanf("%d%d", &a, &b);

    printf("Ban da nhap:\na = %d \nb = %d\n", a, b);

    hoanvi(a, b);

    printf("Sau khi goi ham hoanvi:\na = %d\nb = %d \n", a, b);
    return 0;
}

或者可以使用函数 互换 在图书馆提供 算法

#include <stdio.h>
#include <algorithm> // swap 

int main()
{
    int a, b;
    printf("Nhap 2 so a, b:\n");
    scanf("%d%d", &a, &b);

    printf("Ban da nhap:\na = %d \nb = %d\n", a, b);

    std::swap(a, b);

    printf("Sau khi goi ham hoanvi:\na = %d\nb = %d \n", a, b);
    return 0;
}