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

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值