プロが教える店舗&オフィスのセキュリティ対策術

変数iをmain関数内で初期化しました。
iを引数として持つ関数内にwhile式があり、ループの中でiをインクリメントする。
main関数でその関数を呼び出した後、iは更新されていませんでした。
この理由を教えてください。

「C言語のwhileを含む関数について」の質問画像

A 回答 (2件)

変数のスコープの話ですね。


Printer()の引数に与えるiは、Printer()関数のローカル変数として扱われるためです。つまり、Printer(i)のiは、Printer()関数のために値がコピーされ、Printer()関数の中だけで参照可能で、Printer()関数から復帰したらその値は消え去ります。
どうしても呼び出し元から参照したいのであれば、実体をmain()で宣言し、そのポインタをPrinter()関数に引き渡すような構造にする必要があります。
    • good
    • 0

値渡し、だから。



値渡し:
https://wa3.i-3-i.info/word16069.html
    • good
    • 0

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