Visual Studio(C++)のint配列の挙動についてご教授願います.やりたいことは以下の2点です. ・関数の出力としてint配列を受け取りたいです.

画像

C言語関連 | プログラミング86閲覧xmlns="http://www.w3.org/2000/svg">500

ベストアンサー

1

1人がナイス!しています

ThanksImg質問者からのお礼コメント

教えていただきありがとうございました! 引数の配列に別の配列を代入する操作が,値の代入ではなくアドレスの上書きであると考えると,確かに間違えていますね.納得させていただきました. std::memsetを利用する方法はとても画期的なアイデアだと思いましたが,データの内部表現や仕様にも気を遣わないと不安定になってしまうそうで,自分にはまだハードルが高いと判断させていただきました.すみません...

お礼日時:2021/11/28 15:00

その他の回答(2件)

1

(まさひろさん) 配列は=でまるごとコーピーはできません! ループで0を代入するか、memset()でクリアするか memcpy()でひな形をコピーするか..... 例: memset(input,0x0,sizeof(input));

1人がナイス!しています

1

>21行目の方法は何故ダメなのでしょうか? イメージ的に分かりやすいか分かりませんが、アドレスを家の住所に例えると。 21行目は初期化ではなく引数に入れたaの配列さんのお宅の住所(アドレス)を自作関数の中で作ったinput_initの配列のお宅の住所に置き換えた作業になってしまってます。 なのでその後のinput[0]=9はaの配列さんのお宅とは別のお宅の住所に9を書いちゃってる事になります。 結果的に、値渡しでもなく関係ない配列を作ってその関係ない配列を書き換えただけになってしまっています。

1人がナイス!しています