タイトルの通りc言語での値渡しと、参照渡しの使い分けについて教えて頂きたいです。
自分は値渡しは大きいデータを扱う場面は使わない方がいいといったぐらいしか分かっていません。
それぞれの利点などを具体的に教えて頂きたいです。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。

回答2件
0
C言語に「参照渡し」という機能はありません。すべての引数はコピーして渡される値渡しです。
なお、ポインタを渡すことで、別な変数を参照させることは可能です。配列や文字列などはC言語の構文としてコピーできないので、代わりに先頭を指すポインタを渡す形となります。
投稿2019/05/15 10:41
総合スコア146544
0
ベストアンサー
値渡しだと、その内容がコピーされて関数に渡されます。
コピーが渡るため、その値を関数内で変更しても、渡し元は変更されません。
これをどうにかするには、その値を返り値で返す必要があります
おっしゃるように、サイズが大きくなると、渡すときにメモリのコピーを行う必要があります。また、返り値で帰す場合も、そのサイズのコピーが発生することになります。
その分実行速度が遅くなります
また、関数の引数は一般的にスタック領域を介して行われますが、スタックのサイズは限られているため、それを超えるサイズのデータは値渡しでは渡すことができないってこともありますね
投稿2019/05/15 10:46
総合スコア88163
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/15 13:27
2019/05/15 14:02
2019/05/15 14:48
2019/05/15 15:11 編集
2019/05/16 08:26
2019/05/16 09:13
2019/05/16 10:51
2019/05/17 12:15
2019/05/17 12:16 編集
2019/05/17 12:19
2019/05/17 13:00
2019/05/17 13:01
2019/05/17 13:11
2019/05/17 13:24

退会済みユーザー
2019/05/17 23:47
2019/05/17 23:57 編集
2019/05/18 00:03

退会済みユーザー
2019/05/18 00:32
2019/05/18 03:01 編集
2019/05/18 03:08
2019/05/18 03:43
2019/05/18 03:46
2019/05/18 04:10 編集
2019/05/18 04:15
2019/05/18 04:21 編集
2019/05/18 04:38 編集
2019/05/18 04:42 編集
2019/05/18 04:54 編集
2019/05/18 04:57
2019/05/18 05:38 編集
2019/05/18 05:09
2019/05/18 08:31
2019/05/18 08:49
2019/05/18 09:03
2019/05/18 09:05
2019/05/18 09:05
2019/05/18 12:51
2019/05/18 12:56

あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
質問の解決につながる回答をしましょう。 サンプルコードなど、より具体的な説明があると質問者の理解の助けになります。 また、読む側のことを考えた、分かりやすい文章を心がけましょう。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2019/05/15 13:08
2019/05/15 13:24
2019/05/15 14:57
2019/05/15 15:10
2019/05/16 09:00
2019/05/16 09:01
2019/05/16 09:09 編集
2019/05/16 09:12
2019/05/16 09:14
2019/05/16 11:59
2019/05/16 12:03
2019/05/16 13:26 編集
2019/05/16 13:28
2019/05/16 15:01
2019/05/16 21:31 編集
2019/05/16 21:55
2019/05/16 22:57
2019/05/16 23:24
2019/05/16 23:28
2019/05/16 23:30
2019/05/16 23:34
2019/05/16 23:35
2019/05/16 23:40 編集
2019/05/17 02:54
2019/05/17 09:18
2019/05/17 15:51
2019/05/17 16:25
2019/05/17 17:24
2019/05/17 17:41
2019/05/17 22:10
2019/05/17 22:21
2019/05/18 04:11
2019/05/18 04:17
2019/05/18 04:33
2019/05/18 04:34
2019/05/18 12:47
2019/05/18 12:52
2019/05/19 06:05
2019/05/19 12:40
2019/05/19 12:43 編集