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つのアドレスを使っているため)であることがわかります。