auの日記

プログラミング初心者の日記。(auはハンドルネームです)

C言語のアドレス

auです。
今回はC言語におけるアドレスやポインタ変数について書きたいと思います。
大学でやってるんですが、正直理解できてないのでこれを機に理解したいと思います。

アドレスとは

プログラムにある変数や配列の値は、コンピュータのメモリに記憶されています。このメモリには、それぞれの場所を表す「アドレス」という番号がついて、番号は連続してついています。
例えばプログラムで"int a;"と宣言すると、アドレス4つ分(4バイト分)のメモリが割り当てられます。
では、どうやってその振られているアドレスを知ることができるかというと、変数の名前(intやchar)の後ろに"&"をつけると変数のアドレスを知ることができます。
このアドレスは"0"から始まります。

#include<stdio.h>

int main(void) {
    int a, b;
    a = 10;
    b = 100;
    printf("aの値は %d\n", a); //aに代入されている値を表示
    printf("aのアドレスは %p\n", &a); //aのアドレスを表示
    printf("bの値は %d\n", b); //bに代入されている値を表示
    printf("bのアドレスは %p\n", &b); //bのアドレスを表示
    return 0;
}

// 実行結果
aの値は 10
aのアドレスは 0x7fffc59e4dc0
bの値は 100
bのアドレスは 0x7fffc59e4dc4

"0x7fffc59e4dc0"と"0x7fffc59e4dc4"がint型の変数aとbのそれぞれのアドレスになります。aとbを比べて4つ飛んでることが確認できるので、int型の変数は4バイト(4つのアドレスを使っているため)であることがわかります。