參數傳遞 之 按值傳遞和按地址傳遞的區別

來源:互聯網
上載者:User

<%@ 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>

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.