【C言語】scanfで変数名に&を付けないといけない理由を解説

C言語のscanf関数を使ってキーボードから入力を受け取る際に、変数名の前に&を付ける理由を初心者向けに解説します。

目次から探す

なぜ&を付ける必要があるのか

scanf関数が変数のアドレスを受け取る理由

C言語において、scanf関数を使ってキーボードから入力を受け取る際に、変数名の前に&(アンド)を付ける必要があります。

これは、scanf関数が変数のアドレスを受け取るためです。

scanf関数は、指定されたフォーマットに従って入力を受け取り、その値を変数に格納します。

しかし、C言語では関数に引数として変数を渡す際に、その変数のアドレスを渡す必要があります。

つまり、変数のメモリ上の位置情報を渡すことで、関数内でその変数の値を直接変更することができるのです。

具体的には、scanf関数は変数のアドレスを受け取るため、変数名の前に&を付けることで、その変数のアドレスを渡すことができます。

これにより、scanf関数はそのアドレスに対して直接値を書き込むことができます。

以下に、scanf関数を使って整数を入力し、その値を表示するサンプルコードを示します。

#include <stdio.h>
int main() {
    int num;
    printf("整数を入力してください: ");
    scanf("%d", &num); // &を付けて変数のアドレスを渡す
    printf("入力された値は %d です\n", num);
    return 0;
}

上記のコードでは、変数numのアドレスを&numとしてscanf関数に渡しています。

scanf関数は、入力された整数をnumのアドレスに直接格納します。

その後、printf関数を使ってnumの値を表示しています。

このように、scanf関数を使う際には変数名の前に&を付けることで、変数のアドレスを渡す必要があることを覚えておきましょう。

scanf関数は、入力された値が指定したフォーマットに合致しない場合や、入力エラーが発生した場合にはエラーを返します。

エラーチェックを適切に行うことも重要です。

目次から探す