※過去講義資料編集中 編集終わったら有機酸内からリンクします /******************************
PG班講義 ポインタ基礎
/* ポインタ:ある変数が使っているメモリのアドレス(番地)を示すもの */
#include <stdio.h>
#include <stdlib.h>
int main(void){
int a; int *pa; int **ppa;
/* アドレスを表示するにはアドレス演算子 & を使う aの値とアドレスの表示は次の通り */ a=1; printf(" a = %d\n &a = %p\n",a,&a);
/* aのポインタ pa を作ってそこにaのアドレスを突っ込んでみる */ pa=&a; printf(" *pa = %d\n pa = %p\n\n",*pa,pa);
/* aをいじると当然*paも変わる */ a=2; printf(" a = %d\n &a = %p\n",a,&a); printf(" *pa = %d\n pa = %p\n\n",*pa,pa); /* 逆もまた然り */ *pa=10; printf(" a = %d\n &a = %p\n",a,&a); printf(" *pa = %d\n pa = %p\n\n",*pa,pa);
/* ポインタのポインタなんてこともできる */ ppa=&pa; printf("**ppa= %d\n ppa = %p\n",**ppa,ppa); /* ちなみに *ppa はこんな値になる */ printf("*ppa = %p\n\n",*ppa);
/* stdilib.h のmalloc関数を使うと変数のアドレスを示さなくても ポインタを使えるようになる */ /* malloc(型):型サイズの void* を返す */ pa=(int*)malloc(sizeof(int)); *pa=100; printf(" *pa = %d\n pa = %p\n\n",*pa,pa);
return 0;
} /******************************
実行例>
a = 1 &a = 0029FCE0 *pa = 1 pa = 0029FCE0
a = 2 &a = 0029FCE0 *pa = 2 pa = 0029FCE0
a = 10 &a = 0029FCE0 *pa = 10 pa = 0029FCE0
ppa = 0029FCD4
*pa = 100 pa = 006E1390