本篇文章给大家谈谈交换ab的值c语言代码指针?详细说明,以及交换a和b的值c语言对应的知识点,文章可能有点长,但是希望大家可以阅读完,增长自己的知识,最重要的是希望对各位有所帮助,可以解决了您的问题,不要忘了收藏本站喔。
文章目录:
解释下为什么C语言中用函数交换两个数的值只能用指针,而不能用这个方法...
因为在函数中的参数,并不是调用者的变量,而是临时的变量a和b存放main函数中变量a和b的值,并在函数中用来计算,在fun中给a和b赋值都是在操作这两个临时的变量,函数返回后,这两个变量被舍弃,函数调用也没有将这两个临时变量的值返回给main函数中调用使用的参数功能。
这是 C 语言 本身 特性 规定了 的。你只要记住 这点: 形参 必须用指针,这样才能把 通过 函数加工 后的 数值 带回来。通过函数 互换后 的a,b,才能被带回。至于“为什么”,可以不去追究,它的理由 无非 是什么 啦,值啦之类,时间长了,自己会记混淆。
但是随着你学的深入,你会知道指针才是c语言的灵魂。用函数交换变量,如果不用指针的话,是无法进行的,因为函数只能改变形参,而对于主函数的实参,是没有交换作用的(这里得好好想想,初学可能会糊涂的点就在这)指针的作用很多的,下面是我上课做的一些笔记,你可以看看。
fun2(),看似的确使用了指针,但还是失败,因为这里是将aa和bb的给交换了,而并没有交换aa和bb的值。在这里由于未给c赋值,c中并没有确定的值,c中的值是不可预见的。此时c可能指向一个未知的存储单元。
C语言中如何交换两个指针变量的的值
1、首先,就是最基本的知识,写头文件、函数声明、定义变量。下面还需要定义指针,需要定义两个指针p1和p2,然后把a的赋值给p1,把b的赋值给p2。然后就是调用函数,该函数没有返回值,就直接调用,但是参数的是a和b的,而不是a和b。
2、include stdio.h// 交换给定指针指向整型变量的值。
3、主函数中,使用整型指针从键盘输入两个整数,通过调用swap完成交换 输出交换前后的变量值进行比较。
4、有两种方式可以不使用中间变量,交换同类型的变量a,b的值:1 .使用加法操作a+=b; b=a-b;a -= b;2 .使用异或操作:a^=b;b^=a;a^=b;C语言运算符是说明特定操作的符号, 它是构造C语言表达式的。C语言的运算异常丰富,除了控制语句和输入输出以外的几乎所有的基本操作都为运算符处理。
5、首先要捋顺一下,先看第一段程序。这段程序的目的就是为了将两个变量的数值进行交换。
C语言的指针在函数里面把变量a和b的值交换后为什么能传回main函数?
1、这个交换,就是把为 2000 和 2100 的内存所存储的值进行交换。这样一来,a 和 b 的值也就交换过来了。没错。其实 *p1 的就是 a 的。只是表达方式不同。对 *p1 进行操作,就相当于对变量 a 进行操作。不管在函数体内,还是函数体外。
2、在调用函数中是不能改变主函数里面的值的顺序的。这是C语言或相关语言的基本语言,调用函数中的数值的有效期只在本个函数里,等于说除了调用函数的范围,这些值就找不到了,所以不会改变主函数中的顺序。一般解决这种问题有两种方法:使用指针。
3、在下面程序一中想利用swap函数交换主函数中两个指向a和b 的指针,但是这样是不能实现的,因为函数的形参不能改变实参,所以主函数中的那两个指针是没变的;但是程序二中sort函数中有跟程序一的swap函数类似的操作,可是在没有返回值的情况下主函数却得到了改变后的结果。
4、这是 C 语言 本身 特性 规定了 的。你只要记住 这点: 形参 必须用指针,这样才能把 通过 函数加工 后的 数值 带回来。通过函数 互换后 的a,b,才能被带回。至于“为什么”,可以不去追究,它的理由 无非 是什么 啦,值啦之类,时间长了,自己会记混淆。
5、a,b 是变量……指针p1和p2保存的是a和b的 函数的参数说起来复杂其实就2种传递,值传递和引用传递,有的人说什么传递或指针传递,这其实也是值传递。值传递和引用传递针对的是变量本身,而非通过变量的值找到内存做什么改动。
如果你还想了解更多这方面的信息,记得收藏关注本站。