generated at
参照の値渡し

値渡しだが、この値がポインタになっている場合の話
「参照の値渡し」というか、「参照を値渡し」(する)って感じ
要するに値渡しなので、関数内で仮引数を変更しても、実引数は変更されていない
しかし、その実引数はポインタなので、結局は変更されたように見える
例えば、配列などを渡した場合がわかりやすい
以下のような配列を作った場合、arrが指すメモリの番地は、配列の中身の先頭要素が入っているポインタになる
example
arr = [10, 20]
memory
メモリの番地中身.
0x981610`arr[0]`
0x982020`arr[1]`
.........
0x98400x9816arr
ここで、変数 arr を実引数として関数に入れた時を考えると、
example
def changeArr(array): array[0]=100
この関数を呼び出した時、「参照」を「値渡し」することになる
example
changeArr(arr) // 値渡しで実引数に`0x9816`が`コピー`される
関数 changeArr 内では実引数 0x9816 の先頭要素を「100」に変更するので、結果的に変数 arr の先頭要素を変更したように見える
多くの場合「参照」は「ポインタ」を指すが、そうでない実装もあるらしい
つまり、ポインタでない何かを参照してる時は、「参照」 != 「ポインタ」




nullチェックをすること
ヌルポインタを踏むとクラッシュする


参考