C言語での関数形式と実際のパラメーターの違い

仮パラメータ:関数の定義時に指定されたパラメータ関数呼び出しが発生しない場合、メモリ内のストレージユニットを占有しません。関数呼び出しが発生した場合にのみ、関数の仮パラメータにメモリユニットが割り当てられます。関数呼び出しが終了した後、仮パラメーターによって占有されていたメモリー・ユニットも解放されます。

実際のパラメーター:関数を呼び出すときに渡すパラメーター。実際のパラメータには、定数、変数、式を使用できます。

正式なパラメータと実際のパラメータは、実際には2つの異なるストレージユニットを使用します。

ここに画像の説明を挿入
正式なパラメータと実際のパラメータの間の転送

C言語では、実際の参加仮パラメーターのデータ送信は「値の送信」であり、一方向の送信は、実パラメーターから仮パラメーターにのみ渡すことができ、仮パラメーターから実パラメーターに渡すことはできません。仮パラメーターの値が変更されても、呼び出し元関数の実際のパラメーターの値は変更されません。
実際のパラメータ間の転送の分類

1.値渡し(実際の形式では接続なし)

通常のプログラミングでは、パスバイパスがよく使用されます。基本データ型の変数が定義され、関数が呼び出されると、その変数が関数の引数として関数に渡されます。この転送方法は一方向の値転送を使用し、実際のフォームは接続されておらず、仮パラメーターの変更は実際のパラメーターに影響を与えません。

2.アドレスによる転送(実際のパラメーターは、正式なパラメーターの操作によって変更される場合があります)

アドレス渡しは主に、関数パラメーターがポインター変数や配列などの場合に発生します。

注:

本質的にポインターを関数パラメーターとして使用する場合、関数が呼び出されると、実際のパラメーター変数が仮パラメーター変数に渡され、それでも取得されます一方向の値の受け渡し呼び出された関数で仮パラメーターポインター変数の値が単に変更された場合、これらの仮パラメーターは関数呼び出しの終了後に破棄され、関数が呼び出されたときに実際のパラメーターポインター変数の値には影響しません。

呼び出された関数で仮パラメーターポインター変数を操作して、ポインターが指す変数の値を変更する場合にのみ、実際のパラメーターポインター変数が指す変数の値を変更できます。この場合にのみ、仮パラメーターの変更が実際のパラメーターに影響を与えることができます。

元の記事を28件公開 賞賛された7件 1177回の訪問

おすすめ

転載: blog.csdn.net/haduwi/article/details/105330270