じつは今朝書いた Perl のリファレンスの記事とも関係は大アリなのですが、たまたま手元にこんなものがあったので、ついでながら投稿です。
毎朝このサンプルプログラムを拝むと、そのうち C のポインタが理解できるかもしれないらしいですよ。もっとも、私にはちっとも理解できませんが・・・。
とても有難いサンプルプログラム
ptr.c
#include <stdio.h>
void main()
{
int zero, i;
zero = i = 0;
i++;
int *ptr = &i;
printf("zero == 0, i == 1, ptr は i へのポインタです.\n");
printf("i = %d, &i = %p, ptr = %p, *ptr = %d.\n", i, &i, ptr, *ptr);
// i = 1, &i = 0028FF30, ptr = 0028FF30, *ptr = 1.
int *ptr2 = ptr;
printf("ptr2 はポインタで, ptr2 の指すアドレスは ptr の指すアドレスです.\n");
printf("ptr2 = %p, *ptr2 = %d.\n", ptr2, *ptr2);
// ptr2 = 0028FF30, *ptr2 = 1.
ptr2 = &zero;
printf("ptr2 に zero のアドレスが代入されました.\n");
printf("zero = %d, &zero = %p, ptr2 = %p, *ptr2 = %d.\n", zero, &zero, ptr2, *ptr2);
// zero = 0, &zero = 0028FF34, ptr2 = 0028FF34, *ptr2 = 0.
printf("このとき, ptr が指すアドレスに保存されている値は?\n");
printf("ptr = %p, *ptr = %d.\n", ptr, *ptr);
// ptr = 0028FF30, *ptr = 1.
getchar();
}
以上!