CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
【经验总结】不能实施并行处理的情况 浅谈并行编程中的任务分解模式
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  C/C++ >  新手乐园

请问:传值和传引用、传地址的区别是什么?谢谢!!

楼主RUBY_uu()2005-12-07 06:34:22 在 C/C++ / 新手乐园 提问

大侠们给我详细解释一下吧,感激不尽!!! 问题点数:50、回复次数:10Top

1 楼RUBY_uu()回复于 2005-12-07 06:52:26 得分 0

还有值返回和引用返回、指针返回的区别是什么?  
   
  谢谢!!!Top

2 楼handsomerun(毛毛)回复于 2005-12-07 08:37:12 得分 10

传值,  
  是把实参的值赋值给行参  
  那么对行参的修改,不会影响实参的值  
   
  传地址  
  是传值的一种特殊方式,只是他传递的是地址,不是普通的如int  
  那么传地址以后,实参和行参都指向同一个对象  
   
  传引用  
  真正的以地址的方式传递参数  
  传递以后,行参和实参都是同一个对象,只是他们名字不同而已  
  对行参的修改将影响实参的值Top

3 楼handsomerun(毛毛)回复于 2005-12-07 08:38:50 得分 0

还有值返回和引用返回、指针返回  
  和参数传递意思差不多  
   
   
  Top

4 楼ningzhiyu(凝滞雨)回复于 2005-12-07 08:56:59 得分 10

觉得从函数调用的角度理解比较好  
   
  传值:  
  函数参数压栈的是参数的副本。  
  任何的修改是在副本上作用,没有作用在原来的变量上。  
   
  传指针:  
  压栈的是指针变量的副本。  
  当你对指针解指针操作时,其值是指向原来的那个变量,所以对原来变量操作。  
   
  传引用:  
  压栈的是引用的副本。由于引用是指向某个变量的,对引用的操作其实就是对他指向的变量的操作。(作用和传指针一样,只是引用少了解指针的草纸)Top

5 楼csucdl(csucdl)回复于 2005-12-07 09:29:00 得分 10

函数参数传递机制的基本理论  
    函数参数传递机制问题在本质上是调用函数(过程)和被调用函数(过程)在调用发生时进行通信的方法问题。基本的参数传递机制有两种:值传递和引用传递。以下讨论称调用其他函数的函数为主调函数,被调用的函数为被调函数。  
    值传递(passl-by-value)过程中,被调函数的形式参数作为被调函数的局部变量处理,即在堆栈中开辟了内存空间以存放由主调函数放进来的实参的值,从而成为了实参的一个副本。值传递的特点是被调函数对形式参数的任何操作都是作为局部变量进行,不会影响主调函数的实参变量的值。  
    引用传递(pass-by-reference)过程中,被调函数的形式参数虽然也作为局部变量在堆栈中开辟了内存空间,但是这时存放的是由主调函数放进来的实参变量的地址。被调函数对形参的任何操作都被处理成间接寻址,即通过堆栈中存放的地址访问主调函数中的实参变量。正因为如此,被调函数对形参做的任何操作都影响了主调函数中的  
  实参变量。  
   
  具体的c/c++函数参数传递机制见  
  http://dev.csdn.net/develop/article/65/65393.shtm  
   
   
   
  Top

6 楼tyj_3()回复于 2005-12-07 09:31:12 得分 2

楼上的说的差不多了Top

7 楼csucdl(csucdl)回复于 2005-12-07 09:38:35 得分 0

函数所有的参数在传递的时候都被扩展为32   bits   的了,   返回值同样也被扩展为32   bits   并且存放于   eax   寄存器中,   除了那些   8-byte   的结构体,   它们被存储在   edx:eax   中。   那些特大类型的结构体则是存储在内存中,   而将地址存储在   eax   中作为指针指示结构体的位置  
  以上都是针对MS的开发工具而言  
   
  Top

8 楼junslover(笨笨猪)回复于 2005-12-07 18:01:39 得分 2

这个说了,不懂的还是不懂,以后LZ最好举例子,然后高手们再来拆解程序,追终数值。这样才能懂得更深刻点。Top

9 楼alen_ghl(东方求*)回复于 2005-12-07 18:21:42 得分 8

http://www.yesky.com/SoftChannel/72342371928899584/20041121/1878236_1.shtmlTop

10 楼xiaofeng1982(feng)回复于 2005-12-07 20:10:36 得分 8

传值:  
    形参怎么变,实参也不会跟着形参变.  
   
  传引用:  
    实参会随着形参而改变,相当于用一个变量名.  
   
  传地址:  
    实参会随着形参而改变,由于他们用一个地址.  
  这些只是本人的理解.Top

相关问题

  • 函数返回值是引用和不是引用的区别,菜鸟送分.
  • 引用传值和指针传值的区别
  • 请问值传递和引用传递的区别?,请举例说明
  • compareto,equals ,==在java中相对于值和引用比较的区别
  • 引用型参数与return返回值有什么区别?各适用于什么环境?
  • 指针和引用有何区别??
  • 指针与引用的区别?
  • 引用和指针的区别?
  • 指针和引用什么区别?
  • 引用和指针有何区别!!!!!!

关键词

  • 函数
  • 指针
  • 内存
  • 修改
  • 结构
  • 引用
  • 局部变量
  • 形式参数
  • 主调
  • 变量

得分解答快速导航

  • 帖主:RUBY_uu
  • handsomerun
  • ningzhiyu
  • csucdl
  • tyj_3
  • junslover
  • alen_ghl
  • xiaofeng1982

相关链接

  • C/C++ Blog
  • C/C++类图书
  • C/C++类源码下载

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
惹火投票。。火热进行中...
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
北京创新乐知广告有限公司 版权所有, 京 ICP 证 070598 号
世纪乐知(北京)网络技术有限公司 提供技术支持
CSDN网站24小时值班电话:13552009689
Copyright © 2000-2009, CSDN.NET, All Rights Reserved
GongshangLogo