~/******************************
~
~   PG班講義  ポインタ基礎
~   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= 10 [#qdd91304]
~ ppa = 0029FCD4
~*ppa = 0029FCE0 [#f675a574]
~
~ *pa = 100
~ pa  = 006E1390
~
~******************************/

トップ   編集 差分 履歴 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS