回覆列表
  • 1 # 錢布斯

    首先更正一下你的問題,兩種傳遞分別是按值傳遞和按引用傳遞,也就是說一種傳遞的是值(即一個常量),另一種傳遞的是變數本身(即變數在記憶體中的開始地址)。

    例:

    clear

    stor 50 to x1,x2

    set upfparms to value

    do sub1 with x1,(x2) &&x1是引用傳遞,(x2)值傳遞

    ?x1,x2

    x1=50

    x2=50

    sub1(x1,(x2)) &&x1和(x2)均是按值傳遞

    ?x1,x2

    set udfparms to reference

    do sub1 with x1,(x2) &&x1是引用傳遞,(x2)值傳遞

    ?x1,x2

    x1=50

    x2=50

    sub1(x1,(x2)) &&x1是引用傳遞,(x2)值傳遞

    ?x1,x2

    return

    *sub1.prg

    parameters a,b

    a=a+5

    b=b+2

    return

    原理如下:

    1. 當使用括號將變數名括起來的時候,如(x2)的 ,它是個表示式,與x1+x2、3*x1的概念一樣,所以先計算值,然後傳遞這個值,所以肯定是值傳遞。

    2. 當使用do sub1 with x1,(x2) 這種格式時,x1一定是按引用傳遞,不管set udfparms是value還是reference,即這種格式下預設是引用傳遞,不理udfparms的設定。

    3. 當使用sub(x1,(x2))時,若set udfparms設定的是value,則x1是按值傳遞,若set udfparms設定的是reference,則x1是按引用傳遞。

    4. 而(x2)總是值傳遞。

  • 中秋節和大豐收的關聯?
  • 著名的哈工大到底是哪個學校,全稱是什麼,這個高校怎麼樣?