栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

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

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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

学习前景

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

  • 旧知识新学了属于是√

学习内容:

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

#include 

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

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

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

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

运行结果:


学习须知:

宝贵经验&&学前理解:

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

加强理解:

现在慢慢的来画个图来理解一下这个过程

在说明上:之后再来完善,很多不确定的部分,可以通过打印地址来理解。

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/890427.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号