10−4.ポインタのポインタ

10-3 で学習した「ポインタの配列」はポインタを使ってアクセスすることができます。 このポインタを「ポインタのポインタ」と呼びます。

「ポインタの配列」と「ポインタのポインタ」

(例)
char *mnthp[3] = {		/* ポインタの配列の宣言 */
	"January", "February", "March"
};
char **p1, **p2, **p3;		/* 「ポインタのポインタ」の宣言 */
int i, j;

p1 = p2 = p3 = mnthp;		/* 「ポインタのポインタ」にポインタの配列 */
				/* の先頭番地を設定 */

/***** 例1 *****/
for (i = 0; i < 3; i++) {		/* 「ポインタのポインタ」の値を変えずに */
	printf("%s\n", *(p1 + i));	/* 相対的に文字列を出力 */
}

/***** 例2 *****/
for (i = 0; i < 3; i++) {		/* 「ポインタのポインタ」の値そのものを */
	printf("%s\n", *p2);	/* 更新して絶対的に文字列を出力 */
	++p2;
}

/***** 例3 *****/
for (i = 0; i < 3; i++) {
	j = 0;
	while(*(*p3 + j) != '\0') {	/* 「ポインタのポインタ」を使って、*/
		printf("%c", *(*p3 + j));	/* 1文字ずつ出力する */
		j++;
	}
	printf("\n");
	++p3;
}
(実行結果)
(例1と例2の解説図)
(例3の解説図)
演習
◆◆前ページ  ▲TOP▲  次ページ◆◆

banner
「初心者のためのポイント学習C言語」
Copyright(c) 2000-2004 TOMOJI All Rights Reserved