私はC#を介してJeffrey Richters CLRを読んでおり、その中で彼はrefパラメーターを使用して参照自体が値によって渡されると述べています。これは私には理にかなっており、ポインタに類似しているようです。
つまり、Cでポインタを関数に渡してから、mallocを介してポインタを割り当てると、新しいメモリ位置を指すようにポインタが変更されますが、ポインタ自体はコピーであるため、元のポインタは再割り当てされません。関数に渡されます。関数外のポインターへの変更を実行するには、ダブルポインターを使用する必要があります。
ただし、C#では:
void Swap(ref Object a, ref Object b)
{
Object t = b;
b = a;
a =t ;
}
動作します。これは、参照が価値によるものではないことを私に示しています。上記のmallocと同様に、参照によってオブジェクトを渡し、それに新しいオブジェクトを割り当てることができ、再割り当ては関数の外部で持続すると想定しています。
誰かが私の混乱を解消できますか?