引数の渡し方
関数やメソッドでの引数の渡し方の種類について
値渡し
参照渡し
参照の値渡し
以下同じものを指す
共有渡し
ポインタ渡し
アドレス渡し
継続渡し
前提
以下のような変数を定義したときの、メモリ空間の状態は以下のようになる
「変数x」用に0x8840番地が割り当てられ、そこには「10」が入っている
code:example
x = 10
y = 20
table:memory
メモリの番地 中身
0x8836 . .
0x8840 10 x
0x8844 20 y
0x8848 . .
関数は、呼び出された時に、↑とは別に、関数の仮引数用のメモリ領域が確保される
呼び出し終了時に解放される
code:example
def hoge(a, b):
return a + b
table:memory
メモリの番地 中身
0x9914 . a
0x9918 . b
参考
値渡しと参照渡しの違いを理解する
Evaluation strategy - Wikipedia
============================================================================
#要編集
Rust: Ownershipにも少し。
★カニ本 第1版 p.94
https://www.haya-programming.com/entry/2019/04/26/053359
https://qiita.com/rinse_/items/cffa87016b7de49391ae
https://qiita.com/ur_kinsk/items/949dabe975bdc1affb82
https://qiita.com/ur_kinsk/items/7055ec8b50622289eeb2
https://wp-p.info/tpl_rep.php?cat=js-intermediate&fl=r12
https://qiita.com/mdstoy/items/2ef4ada6f88341466783
https://www.haya-programming.com/entry/2018/06/19/181657
https://qiita.com/tadsan/items/e02d881259a525f7a2bb
https://qiita.com/tadsan/items/e02d881259a525f7a2bb
https://qiita.com/makotoo2/items/50c6ee98c18f35688b17
https://woshidan.hatenablog.com/entry/2014/09/06/002003
https://www.deep-rain.com/programming/javascript/856
https://teratail.com/questions/94661
https://www.geekpage.jp/programming/c/func-pointer-arg.php
https://qiita.com/agate-pris/items/05948b7d33f3e88b8967
https://qiita.com/agate-pris/items/05948b7d33f3e88b8967
Rust: Ownership#5ca76194198270000063f749
評価戦略
Javaの参照渡しとC++の参照渡しは指しているものが異なってて混乱したって記事を見たがどうなんだろう
https://norikone.hatenablog.com/entry/2018/04/24/【図解】値渡し、アドレス渡し、参照渡しをメモ
https://qiita.com/mdstoy/items/2ef4ada6f88341466783
各言語での中身
キーワード
Deep copy
shallow copy
ガベージスラッシング
python https://qiita.com/Daisy/items/a39e60f530f9adde422c
https://qiita.com/uhyo/items/da4a764f313a3b795d59
参照渡し問題
Nim
http://flat-leon.hatenablog.com/entry/nim_arg_pass
JS
前の資料
Rust
本
http://cuto.unirita.co.jp/gostudy/post/pointer/ https://qiita.com/agate-pris/items/05948b7d33f3e88b8967