※過去講義資料編集中 編集終わったら有機酸内からリンクします /******************************

  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

ppa = 0029FCD4

ppa = 0029FCE0

*pa = 100
pa  = 006E1390

***************************/


トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS