SE&ビジネスパーソンとしてお勉強中なブログ

スポンサーサイト

--/--/-- -- [Edit]

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

[C言語] 構造体コピー

2010/02/21 Sun [Edit]

=で代入する方法とmemcpyする方法がある。

結果はどちらも同じで、ちゃんとコピーされる。

コピー元の値を変えてもコピー先の値は変わらない。

続きを読む ≫



スポンサーサイト

[C言語] 関数間での構造体の受渡し

2010/02/21 Sun [Edit]

関数を呼ぶ場合における、構造体の実体渡しとアドレス渡しの違いを実験。

注)
当初、アドレス渡し(ポインタ渡し)のことを参照渡しと表記していましたが、 コメントでのご指摘の通り、C言語で「参照渡し」はできません。
アドレス渡しの場合、ポインタの「値」であるアドレスが仮引数に「コピー」されます。
よって、あくまでもポインタの値を「値渡し」しているのであって、「参照渡し」とは異なります。
ちなみに「参照渡し」では、実引数と仮引数は同一の記憶域が共有されます(コピーしない)。 従って、呼び出され側での操作が呼び出し側に反映されることになります。
C言語では、ポインタを介して間接的に呼び出し側の構造体を操作することによって、 あたかも「参照渡し」したかのような効果を実現することになります。


当然のことですが実体渡しの場合、仮引数にコピーされた構造体を操作することになるので呼び出され側での変更は、呼び出し側には影響を与えません。

この○○渡しという言葉の使い方は、別途まとめてみた。あくまでも個人的な見解ですが。引数の渡し方

ちなみに実体渡しの場合、引数のコピーが発生するのでアドレス渡しの方が効率的と言えます。

続きを読む ≫



Top
SE&ビジネスパーソンとしてお勉強中なブログ

ブログ内検索

カテゴリー

最近の記事

最近のコメント

最近のトラックバック

RSSリンク

Amazon

楽天 人気商品

なかのひと

iKnow

Dictationバッジ

合わせて

あわせて読みたいブログパーツ
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。