按地址传递:一种将参数地址而不是将值传递给过程的方式,这就使过程访问到实际的变量。结果过程可改变变量的真正值。除非另作说明,否则按地址传递参数。也就是说传递的是变量再内存中地址的指针或引用;
按值传递:一种将参数值而不是将地址传递给过程的方式,这就使过程访问到变量的复本。结果过程不可改变变量的真正值。也就是说传递的是变量的内容。
其实C语言中函数参数的传递 全 是 值传递
所谓的 地址 传递,只不过是程序员那么称呼他们而已
比如函数: int func(int input);
如果我把 input当做普通值使用( 例如:printf("%d
",input); )它就是一整形
如果我把 input当做一指针使用( 例如: *((int*)input) = 5; )它就是一指针,
但是你自己要明白:
1.调用函数传的是什么值,用于什么作用,
2.被调用函数中如何使用这个参数
楼主 首先要明白值传递和地址传递简单点说就是值传递就是这个值得复制版本原来的那个是不会改变的但是地址传递就不一样了地址传递是穿的地址,就像上面的传过去的是&x,即使x的地址,
f函数的意思是 y的值和x所指向空间的值的和付给y,此时y的值为4+2=6;
然后 *x(就是x所指向空间的值)和y的和再给x所指向空间,就是6+2=8;
所以结果是x=8(因为是地址传递,所以值变化了);y=4,因为传递过去的是复制的值,不影响原来的值。
希望满意不懂得话可以继续问希望能采纳
传入参数一般按值传递,即函数中的修改不会反映到调用函数中来。
传出参数一般用按地址传递的方式,此时被调函数中的修改会反映到主函数中。
如果即是传入参数,又希望是按地址传递的方式(效率考虑),则前面用const修饰,作用:虽然是按地址传递方式,但在函数中不能修改其值)
编程中,很多东西要你自己去摸索,才能真正的理解。关于地址与值的问题,其实你自己可以试,把变量的地址输出来看看看是不是一样,比如 printf("%x",&a); 这样就是以把变量a的地址用16进制的方式输出来,看看地址到底是怎么一回事。
传值与传地址可以这样理解:
就像我把我写的作文抄了一份给你,你拿去看了之后把有的地方改了,现在我要交作文,而我有一份,所以我直接交了,我交的作文内容并没有变,这就是传值,即值传递。
同理,如果我把我的作文直接给你,你看了后也把有些地方改了,现在我也要交,你只能还给我,我再交,这时我交的就是被你改过的了,这就是传地址,即引用传递。
这只是我的理解,有误的地方还请指正。
声明: 我们致力于保护作者版权,注重分享,被刊用文章因无法核实真实出处,未能及时与作者取得联系,或有版权异议的,请联系管理员,我们会立即处理,本站部分文字与图片资源来自于网络,转载是出于传递更多信息之目的,若有来源标注错误或侵犯了您的合法权益,请立即通知我们(管理员邮箱:daokedao3713@qq.com),情况属实,我们会第一时间予以删除,并同时向您表示歉意,谢谢!
本站内容仅供参考,不作为诊断及医疗依据,如有医疗需求,请务必前往正规医院就诊
祝由网所有文章及资料均为作者提供或网友推荐收集整理而来,仅供爱好者学习和研究使用,版权归原作者所有。
如本站内容有侵犯您的合法权益,请和我们取得联系,我们将立即改正或删除。
Copyright © 2022-2023 祝由师网 版权所有
邮箱:daokedao3713@qq.com