アドレス
アドレス(メモリアドレス/Memory address)とは、コンピュータにおいてCPUやその他のハードウェアがデータを書き込み、また読み出すメモリ上の位置(番地)の一意な識別子です。
プログラム内で変数や配列などを宣言すると、コンピュータのメインメモリ(Random Access Memory/RAM)上に記憶(確保)されます。
変数が確保されたメモリ領域の場所を指しめすものをアドレスと言います。
また、プログラム内でこのアドレスを利用する(扱う)ための変数をポインタ変数と言います。

アドレスの取得
アドレスは、変数等が保存されているメモリの場所(メモリ番地とも言います)を示すものです。
「&」は、変数のアドレスを取得する為の演算子で「アドレス演算子」と呼ばれます。
変数のアドレスを表現する場合、次のように記述します。
&変数
但し、配列の場合は、配列変数自身が先頭アドレスを表現します。
例として int iarray[5] という配列を宣言した場合、この配列の先頭アドレスを表現する場合、次のように記述します。
iarray &iarray[0]
上記2つの記述例はいずれも同じアドレスを表現します。
アドレス演算子を使用した記述例
// アドレス演算子 program in C.
#include <stdio.h>
int main(int argc, char *args[])
{
int i = 5; // 整数
printf("0x%08x:%d\n", &i, i);
return 0;
}
printf()の変換指定子「%x」を指定することで16進数での表示が可能となります。
「%」と「x」の間に「08」を指定することで「0」パディングを行い、表示を8桁に調整しています。
実行結果
0x00aff798:5
変数「i」の割り当てられたメモリアドレス:0x00aff798 に 5 が格納されていることが確認できます。