交换变量地址 c语言,C/C++知识点之C语言内存地址交换

本文探讨了在C语言中如何正确实现地址交换,通过分析错误的交换代码和成功的示例,强调指针只能操作变量的值而非地址,并指出形参无法直接改变实参的值。文中以Swap函数在排序算法中的应用为例,解释了地址交换的重要性。
摘要由CSDN通过智能技术生成

本文主要向大家介绍了C/C++知识点之C语言内存地址交换,通过具体的内容向大家展示,希望对大家学习C/C++知识点有所帮助。C语言课很无聊,因为之前学过C#所以就感觉特别的无聊.

但是,只能说我看过,不能代表我懂.

特别是这个地址交换.但是我是想做一个排序尺算法,里面有一个Swap函数,作用是比较两个数的大小,保证形参a永远大于形参b,里面正好用了一个地址交换.

那时候做错了,没有任何实际效果.为了完成那个作业,我就迅速重构了一遍,然后把地址交换变成了值交换.

今天上课的时候正好碰到那时候仓促改代码却没有好好思考的问题.也就是地址交换无效的问题.

让我回顾一下当时的遭遇:

1 void swap(int *a, int* b)

2 {

3     //swap函数作为一个数据交换函数,完成a,b两个数的大小比较

4     //如果b>a则交换地址,使之左边恒大于右边

5     if (*a > *b)

6     {

7         int *c = a;

8         a = b;

9         b = c;

10     }

11     //这里完成地址交换

12 }

但是结果却是没有改变,比如传入的变量a=12,b=13.结束之后a仍然等于12,b仍然等于13.

当时因为时间问题,并没有深究,但是现在老师给我们同样的问题,这下就暴露出我什么都不懂了.

下面是老师课堂上的代码.

1 void swap(int *a, int* b)

2 {

3     int* temp=a;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值