ポインタの配列
配列の中にポインタを格納できる。
主な使用方法は「文字列の配列」。*1
例
#include <stdio.h> int main (void) { char *seasons[] = {"spring", "summer", "fall", "winter"}; int i,length; //配列の要素数を取得 length = sizeof seasons / sizeof seasons[0]; for (i = 0; i < length; i++) { printf("seasons[%d] = %s\n", i, seasons[i]); } return 0; }
実行結果
seasons[0] = spring seasons[1] = summer seasons[2] = fall seasons[3] = winter
ポインタの配列をポインタに代入する
#include <stdio.h> int main (void) { char *seasons[] = {"spring", "summer", "fall", "winter"}; char **p; p = seasons; printf("%s\n", p[2]); //fall printf("%s\n", *(p + 2)); //fall printf("%c\n", p[2][1]); //a printf("%c\n", *(*(p + 2) +1)); //a return 0; }
*1:二次元配列でも文字列の配列を実現できるが、列数が固定されてしまうので、文字列の長さがまちまちの場合はメモリの無駄になりやすい。