参照渡しで値を渡します


おはよう!値によるパスの違いは何ですか?パラメータを持つ関数がある場合、以下のコード(言語C )のようにパラメータを呼び出します.
int fun(int x, int y)
{
x=1;
y=2;
}

int x=3, y=4;

fun(x,y);
printf(x=%d,y=%d, x,y);
まずcall by valueを考えます.このコードでは、パラメータxとyの値は別のメモリ位置に格納され、格納されます.
x=1
x=3
y=2
y=4
関数funl ()が行われた場合、ローカル変数x = 1とy = 2はメモリから削除されますので、xとyを現在印刷するとき、3と4が表示されます.
今すぐ参照で呼び出しを見てみましょう.ここでも4つの記憶場所が必要ですが、重要な違いがあります.
int fun(int *p1, int *p2)
{
*p1=1;
*p2=2;
}

int x=3, y=4;

fun(&x,&y);

ここでは“&”で、x = 3とy = 4のメモリドレスを関数に渡します.つまり、funper ()関数のポインタポインタがadressを格納していることを意味し、自分のメモリで値を受け取ることはできません.そのような例は次のようになります.
p1=1000 //memory address of x
p2=2000 // memory address of y
funp ()関数の中で* pを書きます.* p 1 = 1でxの値にアクセスしたいので、xの値を1に変更し、* p 2 = 2でYの値を2に変更します.**はDereference演算子とも呼ばれます.あなたが私の説明でより多くの映像を望むならば、このビデオをチェックしてください:
https://youtu.be/HEiPxjVR8CU
良い一日を.😊