(原创)指针变量,内存,值三者的关系,很形象!

实际参数a在内存0x28ff18中存放了值123;

比喻:a把自己的123块钱放入了储物柜的1号箱;

实际参数b在内存0x28ff1C中存放了值321;

比喻:b把自己的231块钱放入了储物柜的2号箱;


自定义函数myswap(int *x,int *y)通过指针变量*x,*y通过调换内存0x28ff18和内存0x28ff1C的值,交换了a和b的数值;

比喻:捣蛋鬼函数myswap(int *x,int *y)拿到了钥匙*x,*y,把储物柜1号箱(内存0x28ff18)和储物柜2号箱(内存0x28ff1C)的钱交换了一下,因此a和b的钱变成了a=123,b=321。

/*
*copyright(c) 2018,HH
*All rights reserved.
*作 者:HH
*完成日期:2018年7月9日
*版本号:v1.0
*
*问题描:;wtaches观察,指针地址传递!
*输入描述:;
*程序输出:;。
*a,b的地址没变,但是地址中存储的值变了!!!
*/

#include<stdio.h>
void myswap(int *x,int *y)
{
    int t;
    t=*x;//t的值等于指针变量x指向地址所存储的值;*间接引用
    *x=*y;//地址y中存储的值b转移给了地址x存储
    *y=t;//地址y存储的值变位t
    printf("形式参数的输出:%d\t%d\n",x,y);//输出的是指针变量十进制表示的内存地址!
}
int main()
{
    int a,b;
    scanf("%d %d",&a,&b);
    printf("调用前实际参数的值:%d\t%d\n",a,b);
    myswap(&a,&b);//此处是关键:将实际参数a和b的地址,赋给被调用函数!!!
    printf("调用后实际参数的值:%d\t%d\n",a,b);
    return 0;
}







评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值