精品偷拍一区二区三区,亚洲精品永久 码,亚洲综合日韩精品欧美国产,亚洲国产日韩a在线亚洲

  • <center id="usuqs"></center>
  • 
    
  • 程序設計 call by value ,call by address ,call by name

    程序設計 call by value ,call by address ,call by name
    假設有一段code內(nèi)容大致如下:
    ----------------------------------
    MAIN()
    BEGIN
    A[1:4]={1,2,3,4};
    X = 1;
    Y = 2;
    CALL SUB(X,Y,A[X]);
    END
    SUB(A,B,C)
    BEGIN
    A = B;
    C = 12;
    END
    ----------------------------------
    在下列三種呼叫方式下
    程式執(zhí)行的結(jié)果各為何?
    希望能附上說明給我,這樣我比較能理解
    call by value
    call by address (reference)
    call by name
    其他人氣:178 ℃時間:2020-01-27 11:34:31
    優(yōu)質(zhì)解答
    call by value 方式:
    調(diào)用時子程序得到的是參數(shù)值的副本,子程序中對形參的改變其實只是影響了該副本的值,但在返回主程序后該副本會被丟棄,因此在主程序中按值調(diào)用的參數(shù)仍保持原來的值.
    例如SUB(A,B,C)中,若形參A是by value的,則在MAIN中CALL SUB(X,Y,A[X])后,X仍為1.
    call by address/reference 方式:
    調(diào)用時子程序得到的是實際參數(shù)的內(nèi)存地址,因此在子程序中改變形參的值時,實際會導致對該形參所對應的地址處的內(nèi)存數(shù)據(jù)的變化,即直接修改的是主程序中的變量的值,返回主程序后該參數(shù)所對應的變量值會產(chǎn)生變化.
    例如SUB(A,B,C)中,若形參A是by reference的,則在MAIN中CALL SUB(X,Y,A[X])后,X會變?yōu)?.
    call by name 方式:
    有點類似于宏擴展的方式,調(diào)用的參數(shù)并非是在調(diào)用前計算出來,而是在子程序中每個引用所對應的形參的地方都重新進行計算,因此有延遲計算的作用.例如你例子中,若主程序調(diào)用SUB時是by name的,則實際執(zhí)行的情況是:
    A=B --> X=Y --> X=2
    C=12 --> A[X]=12 --> A[2]=12
    這里就看到,因為X的值先變化過,所以在對C賦值的時候,實際影響的是A[2],而不是A[1].
    我來回答
    類似推薦
    請使用1024x768 IE6.0或更高版本瀏覽器瀏覽本站點,以保證最佳閱讀效果。本頁提供作業(yè)小助手,一起搜作業(yè)以及作業(yè)好幫手最新版!
    版權(quán)所有 CopyRight © 2012-2024 作業(yè)小助手 All Rights Reserved. 手機版