zoukankan      html  css  js  c++  java
  • 参数传递 之 按值传递和按地址传递的区别

    <%@ Page Language="vb" Debug="true" ContentType="text/html" ResponseEncoding="gb2312" %>
    <meta http-equiv="Content-Type" content="text/html; charset=gb2312" />
    <title>参数传递之 按值传递和按地址传递的区别</title>
    <style type="text/css">
    <!--
    .STYLE1 {color: #CCCCCC}
    .STYLE2 {color: #999999}
    -->
    </style>
    <head>

    <script language="vb" runat="server">
    sub total(byref day as integer,byval overtime as double) '注意看下后面的解释
    dim money as double
    money=day*800+overtime*800/3
    response.Write("一共工作了:"& day &"天<br>加班:"& overtime &"小时<br>薪水一共:" & money & "元<br>")
    day+=10
    overtime+=10
    end sub
    sub page_load()
    dim day,overtime as double
    day=24   '这里加10是为了验证传递结果的
    overtime=15  '这里加10是为了验证传递结果的
    total(day,overtime)
    response.Write("主程序中天数是:" & day & "<br>主程序中的加班时间是" & overtime & "小时<br>")
    end sub
    </script>
    </head>
    <body>
    <p><hr>
    <span class="STYLE2">这个例题看起来没有问题,如果是细心点的话一定不难发现,在第一个sub过程后面的括号内,我用了两种方式声明过程传递,一种是byref(按地址传送,这种方式传递是用变量的内存地址去访问实际变量的内容,其结果是将变量传递给过程,通过过程去改变变量的值,这种方式效率较高),另种是byval(按值传送,这种方式传递时,传递的只是变量的副本,如果过程改变了这个值,那也只是改变副本,而不会影响到变量本身。)</span>
    <p><hr><span class="STYLE2">
    上面例题所得出的结果是:<br>
    一共工作了:24天<br>
    加班:15小时<br>
    薪水一共:23200元<br>
    主程序中天数是:34       这个是按地址传送的,所以他的值被修改了。<br>
    主程序中的加班时间是15小时   这个是按参数传递的,所以他的值未被修改。</span><br>
    </body>
    </html>

  • 相关阅读:
    .net Remoting学习笔记(一) 中庸
    培训是一种乐趣(2)
    ExtJS实战(10)项目总结
    ExtJS实战(4)struts
    ExtJS实战(7)登陆
    ExtJS实战(5)dwr
    让老师崩溃的回答-程序员的经典笑话
    ExtJS实战(9)疑难杂症分析
    ExtJS实战(6)extjs+json
    ExtJS实战(8)CRUD+分页+复杂查询+排序
  • 原文地址:https://www.cnblogs.com/thcjp/p/335486.html
Copyright © 2011-2022 走看看