收录日期:2020/10/28 09:53:43 时间:2016/07/04 16:42:35 标签:C语言
#include <stdlib.h>
#include <stdio.h>

void swap(int **p1, int **p2)
{
    int *temp;
    temp = *p1;
    *p1 = *p2;
    *p2 = temp;    
}

int main()
{
    int a, b;
    int *pointer_1, *pointer_2;
    scanf("%d%d", &a,&b);
    pointer_1 = &a;
    pointer_2 = &b;
    if (a < b)
        swap(&pointer_1,&pointer_2);
    printf("%d %d\n",*pointer_1,*pointer_2);
    
    system("PAUSE");
    return 0;        
}


比如输入3 6
结果是已经交换了的
输出 6 3
我想不通问什么会交换
调用swap()以前情况如下

    p1              pointer_1            a
------------      ------------       ----------
|&pointer_1|----->|    &a    |------>|    3   |
------------      ------------       ----------

    p2              pointer_2            b
------------      ------------       ----------
|&pointer_2|----->|    &b    |------>|    6   |
------------      ------------       ----------
======================================================
调用swap()以后:
p1              
------------ 
|&pointer_1|
------------ 

    p2          
------------   
|&pointer_2|
------------
然后p1,p2释放。pointer_1,pointer_2的指向并未改变啊,为什么值会交换呢?      
 
你这里swap函数的作用是交换两个int型指针的值. 你在main里调用swap后,实际上pointer_1已经指向了大的整型变量, 在printf输出用*取值时,就是交换后的值了.
指针变量的值交换了~~~~~指向是变了的,但a b的只没变
改变的是内容,不是地址```
肯定会交换
point1,point2的内容变了,也就是指向的地址变了
引用 3 楼 wuroy27496 的回复:
改变的是内容,不是地址```
运行成功,不过看不到结果

D5程序转D6程序的问题!高分相送!进者有分! Help.浏览器窗口的宽度,谢谢各位大虾 基于J2EE的WebOffice源码发布 在Excel宏中如何在不打开另一个Excel文件的前提下取得其中数据? 各位新年好,有个问题,关于XML的,帮我看下,谢了 有什么查询可以得到数据库名? 我用的是D版SQL SERVER2000,想升级到SP3,升级后会有影响吗?听说WIN2000升级到SP3后会对默认安装的OFFICE产生影响。。。请帮助! http://211.152.251.2/bbs/ 怎样用程序执行.exe文件 关于MDI窗口的问题? 请问,datareport中如何用代码动态增加控件 进来看! 在C++ Builder中的Shape控件,怎样变为三角形? 在hook的回调函数中引用全局变量问题 怎样得到文本框中文字的行数?或回车的数量?最快的算法! BIOS升级完全失败,求高手相助!急!!!!在线等一天!!!!解决绝对高分,可分次给 文档窗口有些字和BUTTON。做一个层把它盖上,层上有些字和BUTTON... hpux自动启动oracle 怎么样让用BDE访问的数据库真正的保存到数据库文件中去?--急,在线等待!!! ASP.net中能自画控件吗? 恢复数据库问题:数据库是 SQL SERVER 7.0下做的备份,在WINDOWS 2000下恢复,提示:\'无法还原数据库,因为创建该数据库的服务器的版本(1174 请教有些汉字输入到oracle8.1.7中变成了中文问号,如何处理? 怎样在对象原型中,获取生成这个原型对象的对象变量名字! 我的Crystal Reports 7 安裝盤有一文件坏了,請幫忙 随机遍取0~99整数问题,求算法。 求教各位大虾-噬菌体报告浏览器寄生虫 请教关于servlet的一些问题,谢谢 新手的一个很幼稚的问题 怎么向数据窗体中添加记录!! 祝愿大家新年快乐,心想事成。散分