-- 変数・関数とポインター --
C言語では、変数の前に&を付ける事で実際にプログラムがメモリに読込まれた状態の変数アドレスを得ることが出来ます。
アドレスとはコンピュータがプログラムを実行する際に実質的に動作するCPU(中央演算処理装置)と呼ばれる部品が主記憶装置(メモリ)に記憶された数値の羅列で出来ているプログラム(機械語[CPUが理解できる言語])を実行します。
これらのプログラムやデータには記憶されている場所を示すアドレスが振られており、その位置をいいます。
以下のプログラムでは、変数に割り当てられたアドレスをprintf関数で表示して、同じ内容をprintfのアドレスを関数へのポインターを格納する変数に代入して呼び出します。
#include <stdio.h>
int main() {
int i=0;
int (*f)();
i++;
// 変数のアドレスと値をprintfで表示
printf("Address:%08X value=%d\n",(int)&i,i);
// printfのアドレスを関数へのポインター変数に代入
f=printf;
f("Address:%08X Value=%d\n",(int)&i,i);
return 0;
}