C语言 swap()函数 在函数中用指针交换变量的值

学习前景

还记得在大一刚来不久在学C语言的时候,就讲了如何通过指针在函数内交换两个数的值并在主函数中也能实现交换,但是当时是属于半懵半懂的状态,今天来好好把这个经典的指针问题捋一捋

  • 旧知识新学了属于是√

学习内容:

首先我们来看这个代码是怎么写的

#include <stdio.h>

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

int main()
{
  int x = 3,y = 5;
  printf("before sawp(): x = %d,y = %d\n",x,y);

  swap(&x,&y);
  printf("after swap(): x = %d,y = %d\n",x,y);

  return 0;
}
void swap(int *a,int *b)
{
  int temp;
  temp = *a;
  *a = *b;
  *b = temp;
}

运行结果:
在这里插入图片描述


学习须知:

宝贵经验&&学前理解:

  • 我们如果想在函数(这里指非主函数)内改变主函数的变量的值的话,我们在函数传参的时候就需要传递变量的地址,如果传递的是值的话,无论对值怎么操作,在操作的函数中都属于局部变量,在栈中,函数执行完毕之后这部分的内存就没了,主函数中变量的值是不会改变的。(我觉得这个很重要,虽然它是很基础的)
  • 在讲解指针的时候,老师们或者网上都很喜欢说,某个指针指向了那个变量,这个说法是没有问题的,但是在使用多级指针的时候,这样的说法就很容易绕晕(主要是我…),所以在犯错中,得到了一个经验:首先指针也是变量,只是它与一般变量不同的在于,一般变量存储的是值,而指针变量存储的是地址,在感到混乱的时候,就画图看该指针变量中实际存储的值(也就是某个变量的地址)是什么。

加强理解:

现在慢慢的来画个图来理解一下这个过程
在这里插入图片描述
在说明上:之后再来完善,很多不确定的部分,可以通过打印地址来理解。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值