ポインター引数の受け渡し: 値で渡すか、参照で渡すか?
C では、関数の引数は通常、値で渡されます。引数変数のコピーが関数内で作成されます。これはポインタ引数にも当てはまります。そのため、ポインタが関数に渡されるとき、ポインタ変数のコピー (指すメモリではありません) が渡されます。
したがって、関数内でポインタ変数に変更が加えられます。指すアドレスを変更するなど、関数の外にある元のポインターには影響しません。ただし、参照されているオブジェクトの値の変更など、逆参照されたポインタを介してポイントされたメモリに加えられた変更は、ポインタではなくオブジェクト自体が参照されているため、関数の外部に反映されます。
In関数内でポインター値自体を変更する必要がある場合は、ポインターからポインター引数を使用できます。ポインタをポインタに渡すことは、基本的にポインタ変数への参照を渡すことになります。関数内でのポインタへの変更は、関数外の元のポインタに反映されます。
この手法は C で一般的に使用されており、「ポインタへの参照渡し」として知られています。ただし、C では、構文とコンパイラのサポートが改善され、同様の機能が提供されるため、ポインターよりも参照の使用が一般的に好まれます。
参照は基本的に他の変数へのエイリアスであり、参照が関数に渡される場合には参照が使用されます。 、元の変数への参照が効果的に渡されます。これは、関数内で参照に加えられた変更は、関数外の元の変数に反映されることを意味します。
ポインタ間引数と参照の両方を使用して、関数内のポインタ値を変更できます。 2 つの方法のどちらを選択するかは、コードの複雑さ、読みやすさ、コンパイラのサポートなどの要因によって異なります。
以上が値渡しまたは参照渡し: C ではポインター引数はどのように処理されますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。