本文主要向大家介绍了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;
4