[C]scanfが変数アドレスを受信した理由
numという変数をscanfに渡すと、numという変数自体は使用されません.
scanfで別の変数を宣言し、num値を変数に代入し、代入値を使用して変数を出力します.
これはscanf内でnum値を出力に切り替えることに問題が発生する可能性があるためである.
例えば、入力nはn+1を出力する関数add()があると仮定する. add関数が変数値を受け入れる場合の結果: add関数が変数を直接使用した場合の結果:
add()関数内部でnum値がどのように変化するか分からない.
したがって,C言語で関数に値を付与する場合,その変数の値しか使用できない.
ただし、numの値を実際に変更する必要がある場合があります.この場合、変数のアドレスを値に渡すことで処理できます.
これにより、関数は変数を格納する場所に直接アクセスして、変数の実際の値を変更することができます.
従ってscanfは変数のアドレス値をパラメータとして受け入れる.
scanfで別の変数を宣言し、num値を変数に代入し、代入値を使用して変数を出力します.
これはscanf内でnum値を出力に切り替えることに問題が発生する可能性があるためである.
例えば、入力nはn+1を出力する関数add()があると仮定する.
int num = 3;
int result = add(num);
printf("num = %d, result = %d", num, result);
num = 3, result = 4
num = 4, result = 4
プログラムを書く人にとっては、もちろん1しか考えられません.add()関数内部でnum値がどのように変化するか分からない.
したがって,C言語で関数に値を付与する場合,その変数の値しか使用できない.
ただし、numの値を実際に変更する必要がある場合があります.この場合、変数のアドレスを値に渡すことで処理できます.
これにより、関数は変数を格納する場所に直接アクセスして、変数の実際の値を変更することができます.
従ってscanfは変数のアドレス値をパラメータとして受け入れる.
Reference
この問題について([C]scanfが変数アドレスを受信した理由), 我々は、より多くの情報をここで見つけました https://velog.io/@toezilla/C-scanf가-변수의-주소를-받는-이유テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol