指针,解引用操作的初步了解

通过调用函数交换两个变量的值来理解

#define _CRT_SECURE_NO_WARNINGS
#include <stdio.h>
void swap(int* x , int* y) {
  int t = 0;
  t = *x;
  *x = *y;
  *y = t;
}
int main() {
  int a = 0, b = 0;
  printf("请输入要交换的两个数a、b\n");
  scanf("%d%d", &a, &b);
  swap(&a,&b);
  printf("交换后的a=%d,b=%d\n", a, b);
  return 0;
}

形参x,y为int指针类型存了内存上的地址,实参a,b进行取地址&才能与int匹配。创建变量a、b时会在内存中申请两个空间,则x,y存放的内容分别是a,b的内存地址,如图:
在这里插入图片描述
解引用操作x就是根据地址访问到变量a,此处x和a等价,int t=*x就将a的值赋给了t,*x按x存放的a的地址找到了a存放的值然后就赋给了t,如图:
在这里插入图片描述
在这里插入图片描述

x=y就是y解引用操作得到了b的值2,赋给x找到的a的空间这样a就被赋予了b的值2,y=t将t的值赋给了y找到的内存空间里,如图:
在这里插入图片描述
在这里插入图片描述
这样就完成了a,b值的交换。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值