swap交换两个数

#include <stdio.h>

//swap1由于这种方式改变不了由编译器所分配的内存地址,所以a, b的值还是不能改变,仅仅交换了副本的地址

void swap1(int *a, int *b)

{

    int *temp;

    temp = a;

    a = b;

    b = temp;

}



void swap2(int *a, int *b)

{

    int temp;

    temp = *a;

    *a = *b;
    
    *b = temp;

}

//对于swap3,不能实现交换的理由是,C语言中函数的传的是形参,也就是一个副本,虽然在函数内体内交换了,但对真实的数据没影响。

void swap3(int a, int b)

{

    int temp;

    temp = a;

    a = b;

    b = temp;



}



int main()

{

    int a = 6;

    int b = 5;

    printf("before swap\n");

    printf("a=%d\nb=%d\n", a, b);
    
    printf("after swap\n");

    swap1(&a, &b);

    printf("a=%d\nb=%d\n", a, b);

    system("pause");

    return 0;

}

C语言中实参变量和形参变量之间值的传递是单向的“值传递”,不能通过执行调用函数来改变实参指针变量的值(指针变量存放的是地址(即指针)),但是可以改变实参指针变量所指变量的值

猜你喜欢

转载自blog.csdn.net/qq_31702609/article/details/81292833
今日推荐