为什么在被调函数中使用指针就能够互换主函数中两个变量的值? 为什么在main函数中调用该函数不能调换两个变量值?

作者&投稿:褚民 (若有异议请与网页底部的电邮联系)
指针指向一个变量地址,在被调函数中,将变量地址做为参数,这样被调函数就可通过地址(指针)访问变量的内存存储单元对变量进行读写修改,
如这样一个输入语句理解:
scanf("%d", &n); //表示先取n的地址,通过地址向单元写内容

因为主函数和被调函数指针指的是同一个地址

因为他是地址内容的交换

C语言指针使用函数交换两个变量的值~

这个地方会出现不好理解的东西。
调用函数的时候,你放入了int a int b 但是这其实不是你的main函数中的a b只是相当于他们的副本,也就是复制了一个a 和b 传入函数 所以你改变的只是传入的副本 也就是复制的副本a b所以在main函数中打印的ab不会出现变化 依然是a=3,b=6
现在回答第二个问题,怎么会让ab的值变化:传入指针,也就是在main函数中使用a b的指针,然后吧指针传入到函数里面 这个时候ab就会真正的发生变化,因为指针指向的是ab的物理地址,也就是真正的ab,不是副本,这个时候就会改变ab的值。想要理解,可以去百度传值参数和引用参数。纯手打,望采纳

不能,你只是交换了两个局部变量指针的地址,并没有交换main函数中的值

什么是指向函数的指针,有什么好处
答:函数指针是指向函数的指针变量。 因而“函数指针”本身首先应是指针变量,只不过该指针变量指向函数。这正如用指针变量可指向整型变量、字符型、数组一样,这里是指向函数。C在编译时,每一个函数都有一个入口地址,该入口地址就是函数指针所指向的地址。有了指向函数的指针变量后,可用该指针变量调用函数...

指针的作用是什么啊?
答:。第二,指针使得一些复杂的链接性的数据结构的构建成为可能,比如链表,链式二叉树等等。第三,有些操作必须使用指针。如操作申请的堆内存。还有:C语言中的一切函数调用中,值传递都是“按值传递”的。如果要在函数中修改被传递过来的对象,就必须通过这个对象的指针来完成。

请问在C语言中,函数传参时怎样利用指针传递数组
答:数组名就是指针,例如:include <stdio.h> void pr(char *p){ printf(p);} void main(void){ char s[] = "abc";pr(s);}

C语言中调用函数指针占用哪里的存储空间,被调函数运行时内部变量存在...
答:在程序运行时,一个函数占用一段连续的内存。当调用一个函数时,实际上是跳转到函数的入口地址,执行函数体的代码,完成后返回。函数指针指向一个函数的入口地址,也就是函数存储空间的首地址。在C语言中,数组名代表数组的首地址,同样函数名代表了函数的首地址,因此在赋值时,直接将函数指针指向函数名...

程序运行过程中常使用参数在函数(过程)间传递信息,引用调用传递的是实...
答:本题考查程序语言基础知识。进行函数调用时,常需要在调用环境扣的数据传递给被调用函数,作为输入参数由被调用函数处理,基本的调用方式为值调用(或传值调用)和引用调用。其中,值调用方式下是将实参的值单向地传递给被调用函数的形参,引用调用方式下通过将实参的地址传递给形参,在被调用函数中通过指针...

C++ 一个函数怎么使用另一个函数中变量的值
答:1、C++的函数也保存在内存中,所以可以使用指针访问函数地址。2、声明函数指针,其方法与函数原型差不多,以下为一个函数原型。3、程序中声明了一个函数指针,指针类型为整型。4、获取一个函数的地址,只要使用函数名即可。5、使用函数指针调用函数,与普通指针类似,可以用(*fq)来间接调用指向的函数。6...

C++中的指针用法总结
答:说明:在建立对象时,编译系统就为每个对象分配一定的存储空间以存放其成员,不过注意,在一般情况下不同对象的数据存储单元中存放的数据成员是不相同,而不同对象的函数代码却是相同的,也就是说,它们的函数代码是共享的。这时我们可以定义一个指针变量用来存放对象的指针。定义指向类对象的指针变量的一般...

c语言中,要用函数直接调用就好啦。为什么还要用指针???
答:函数的调用必须是已知文件名的。如果你写一个系统的某一层,不知道其他层的内部情况,这时候用指针传递函数最合适。还有,结构体里包含指向函数的指针,就相当于一个简单的“对象”了。看看linux内核里各接口的定义。函数指针的使用使的内核可以很多人同时开发,并且大家只需要知道相应的接口就可以了。这...

感觉回调函数就是通过函数指针调用函数.为什么要用回
答:你接到电话确定了品牌(回调函数被执行),然后反馈给负责人(代码中则是通过服务方的方法下达指令,也可以直接通过回调函数返回),此例中回调函数就是你本身,回调函数指针就是你的手机号。实际运用的简单例子:对一个int型的一维数组进行循环时需要有不同的操作,比如有时需要取最大值,有时需要取最...

C语言 写一个函数交换两个数的值,为什么一定要用指针?
答:fun4()是正确的。为了在函数中改变了的变量能被其它函数调用,正确的办法是用指针变量作为函数参数,在函数执行过程中使指针变量所指向的变量值发生变化。函数调用结束后,哲别变量值的变化依然保留下来,这样就实现了通过函数调用是变量的值发生变化,在其它函数中可以使用这些改变了的值的目的。fun5()也...