簡單來說,值傳遞不會改變輸入值,但是位址傳遞改變變數的值
變數傳遞例子:
pro add_li,a
a=a+
10print,
'add_li value_a:'
+string
(13b)
,aend
pro test_li
l=bindgen(3
,3)print,
'orginal value_l: '
+string
(13b)
,ladd_li,l
print,
'result value_l:'
+string
(13b)
,lend
結果:
idl> test_li
% compiled module: add_li.
% compiled module: test_li.
orginal value_l:01
2345
678add_li value_a:
1011
1213
1415
1617
18result value_l:
1011
1213
1415
1617
18idl>
值傳遞例子:
pro add_li,a
a=a+
10print,
'add_li value_a:'
+string
(13b)
,aend
pro test_li
l=bindgen(3
,3)print,
'orginal value_l: '
+string
(13b)
,ladd_li,l[1:
*,1:
*]print,
'result value_l:'
+string
(13b)
,lend
結果:
idl> test_li
% compiled module: add_li.
% compiled module: test_li.
orginal value_l:01
2345
678add_li value_a:
1415
1718
result value_l:01
2345
678idl>
給出加引數的add.pro(a,b為引數)和作為主程序的myprocedure.pro
pro add, a, b
print,
'a = '
, a print,
'b = '
, b a = a + b
print,
'a = '
, aend
pro myprocedure
x =5; call the add procedure:
add,
3, x
end
執行myprocedure.pro的結果:
% compiled module: add.
% compiled module: myprocedure.
a =3
b =5
a =8
idl>
當pro中有引數時可輸入可不輸入時,可以做如下處理:
n_params()檢測所輸入引數的個數
pro test_li,a,b
a=a*
10if
n_params
() eq 2 then b=b*
5end
通過在end前打斷點,分別看兩次執行a,b的值,結果如下
pro中c為傳出引數
pro add_li,a,b,c=c
c=a+b
print,
'c 的值為: '
,cend
pro test_lil=1
z=2add_li,l,z,c=j
print,
'j 的值為: ',j;
ifn_params
() eq 3 then b=b*
5end
結果:
idl> test_li
% compiled module: add_li.
% compiled module: test_li.
c 的值為: 3
j 的值為: 3
idl>
《傳遞引數》shell學習之路 五
傳遞引數 在執行 shell 指令碼時,向指令碼傳遞引數,指令碼內獲取引數的格式為 n 0 可以輸出執行的檔名稱 n 代表乙個數字,1 為執行指令碼的第乙個引數,2 為執行指令碼的第二個引數,以此類推 輸出所有引數 echo echo 傳遞的第乙個引數是 echo 傳遞的第乙個引數是 echo 傳遞...
引數的傳遞
q 引數 到底是 按值傳遞 還是 按引用傳遞 a 按值傳遞 例子 這裡用乙個經典的 引用型別傳遞到函式引數中 來佐證是按值傳遞的 function setname object let person new object setname person console.log person.name ...
引數的傳遞
我們都應該知道所謂的程式語言就是通過一系列的函式變換,實現資料的傳輸,變換,最終呈現出我們所需要的效果。可以說無論是什麼程式語言資料的傳遞都是彌足珍貴的。可是我們在傳輸資料的過程中不能僅僅是簡單的傳輸,我們需要一種載體來承接我們傳輸的內容,也就是我要說的引數。引數有形參和實參之分,所謂的實參可以理解...