トピック

DEFのローカル変数について

呼び出したユーザー定義関数内のローカル変数は、戻り値を返した後どうなりますか?CLEARしたときのように消去するのでしょうか 【余談】二次元配列を定義関数内で作るときに大きさ自由に決められることに気付いて感動 大きさの違うダンジョンとか作れますねこれ
3そうだね
プレイ済み
返信[1]
親投稿
普通の数値変数の場合、プチコンのユーザ定義命令・関数では、実引き数と実戻り値に「値渡し」と言う方法を採用しています。「値渡し」では、変数そのものではなく変数値のコピーを渡すことです。したがって、引き数の変数を変更しても呼び元の変数に影響しません。戻りは、値のコピーを渡すので、ユーザ定義関数が終了したあとローカル変数がどうなるかを気にする必要はありません。 <つづく>
0そうだね
プレイ済み
返信[2]
親投稿
<つづき> 文字列変数と配列変数の場合は、注意が必要です。 文字列変数と配列変数の場合は、「参照」を「値渡し」しています。「参照」とは、値がどこにあるかを示すものです。 そのため、配列要素の値を変更すると呼び元の配列要素も変更されます。 ユーザ定義関数内で参照への代入をするなど「参照」を変更したときに、その値を呼び元に反映したいときは、戻り値で「参照」を返す必要があります。 使う命令によって参照の変更を伴うものと、参照先を操作するものとがあるので、命令表などで確認してください。
0そうだね
プレイ済み
返信[3]
親投稿
もし、戻った後に、ローカル変数で定義した配列変数の参照先がどうなるのかを気にしているのでしたら、参照先への参照が有効な間は、有効なようです。 もし、戻った後に、ローカル変数で定義した数値変数や「参照」がどうなるかということでしたら、見かけ上は、呼び出し前同様の、なにもなかったことになると考えていいとおもいます。
0そうだね
プレイ済み
返信[4]
親投稿
ほしけん Hosiken
消去されます。一時的に使う配列とかもここでぜひ宣言しまくってください。
1そうだね
プレイ済み
返信[5]
親投稿
回答ありがとうございます DEFは便利だなぁ
0そうだね
プレイ済み