プロが教えるわが家の防犯対策術!

主プログラム Main と副プログラム SubX からなる図のプログラムを実行した
 後の,変数 A,B の値の組合せとして,正しいものはどれか。ここで,プログラ
 ム中の [ ] の部分は,コードの代わりにその内容を記述したものである。


 ┌―――――――――┐┌―――――――――――――――――――――――┐
 │Main       ││SubX(参照引渡しの仮引数 C ,値渡しの仮引数 D) │
 │         ││                       │
 │[変数 A の宣言]  ││[変数 E の宣言]                │
 │[変数 B の宣言」 ││ E = C                   │
 │ A = 1     ││ C = D                   │
 │ B = 2     ││ D = E                   │
 │Call SubX ( A,B )││                       │
 │         ││End Sub                    │
 │End        ││                       │
 └―――――――――┘└―――――――――――――――――――――――┘


   ┌――┬――┐
   │ A │ B │
 ┌―┼――┼――┤
 │ア│ 1 │ 1 │
 ├―┼――┼――┤
 │イ│ 1 │ 2 │
 ├―┼――┼――┤
 │ウ│ 2 │ 1 │
 ├―┼――┼――┤
 │エ│ 2 │ 2 │
 └―┴――┴――┘

A 回答 (2件)

http://officetanaka.net/excel/vba/tips/tips94.htm

値渡しの場合、SubX内で受け取った値を変更しても呼び出し元のMainには影響がありません。
参照渡しの場合、SubX内で受け取った値を変更すると呼び出し元のMainにも影響があります。

Cが参照渡しでDが値渡しですから、もとの変数でいうとAには変更がなくてBは書き換えられてしまうという事。

あとは考えてみてください。

この回答への補足

有り難う御座います。

プログラムを学ばせて頂いた経験が御座いませんので、紹介して下さったサイトの内容を理解し難いのですが、学習の方向性が分かりました。

補足日時:2011/09/07 02:27
    • good
    • 0

値渡しとは、データのコピーを副プログラムに渡す方法です。


あなたが書類の原本を持っているとして、その書類をコピーして他人に渡します。他人は、書類のコピーを使って仕事をします。書類のコピーですから、書き込みしようが破いて捨てようが、あなたが所有している書類の原本には何の影響もありません。

参照渡しとは、データの格納場所を副プログラムに教える方法です。
あなたが書類の原本を持っているとして、5番ロッカーに保管してあります。あなたは他人に、「その書類なら、5番ロッカーに入っていますから、使ってください」と教えてあげます。その他人は、5番ロッカーに行って、書類の原本を使って仕事をします。もし、書類に書き込みをしたら、それは原本なので、原本の内容が書き換えられてしまいます。

副プログラムに値渡しをした場合、副プログラムがどんな処理をしようが、元の値は変更されません。
副プログラムに参照渡しをした場合、副プログラムが値を変更すれば、元の値が変更されます。

SubX(A,B)のBは値渡しなので、Bの値は変化しません。
Aは参照渡しなので、副プログラム内部の処理によって値が変化します。

この回答への補足

有り難う御座います。

全く存じていなかった用語に関しましての質問でしたので、丁寧に教えて頂けまして、非常に助かりました。

補足日時:2011/09/07 02:27
    • good
    • 2
この回答へのお礼

参照渡しと値渡しとの後でのCallだという点を踏まえまして、これの正解を選ぶのですね。

お礼日時:2011/09/07 02:36

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!