我要投搞

标签云

收藏小站

爱尚经典语录、名言、句子、散文、日志、唯美图片

当前位置:双彩网 > 值调用 >

VB中传值引用和传地址引用是干什么用的

归档日期:07-05       文本归类:值调用      文章编辑:爱尚语录

  可选中1个或多个下面的关键词,搜索相关资料。也可直接点“搜索资料”搜索整个问题。

  展开全部准确地说,应该是在调用函数时,参数是传值还是传地址,本质上它们都是用来进行数据传递,不过有着重要的区别,下面以一段Java代码(来自网上)为例说明。

  显然,通过调用charge(int d)方法,date的值并没有改变,这是因为调用该方法时,java就给局部变量d分配了一个临时内存即d=date,在执行方法体的时候,d被赋值为100。但整个过程中date的值还是23,并没有改变。(这是传值调用)

  但是,在调用charge1(BirthDay d)时,给局部变量d在栈内分配了个一个内存空间,这个内存空间存放的是传过来的地址,即d和b1同时指向了一个堆空间(同一变量),在执行方法体的d又被指向了另一个堆内存。但b1还是指向以前的那个堆空间,即b1的值并没有改变。(传地址调用)

  同理,在调用charge2(BirthDay d)时,d和b2都指向了同一个堆内存空间,在执行方法体的时候,给d指向的day这个属性赋予了新的值。那么也就相当于b2的值改变了一样。(传地址调用)

  上面通过一个例子说明了传值调用和传地址调用的区别。另外还有几点需要说明的是:

  1、java语言中并没有像c++那样的显式指针,但java中的引用就相当于c++的指针。VB也似乎也是如此。

  2、new出来的对象是存放在堆内存(heap)中的,局部变量和static成员变量一样存放在栈内存(stack)中。

本文链接:http://hotel-lermoos.com/zhidiaoyong/340.html