1
ポインタ配列を渡す
1.1
学習のポイント
ポインタ配列のデータを関数に渡す方法を学びます。1.2
ポインタ配列を渡す
ポインタ配列も一次元配列と同様に、先頭アドレスだけを渡します。 たとえば、 char *name[10]; というポインタ配列を関数funcに渡すには、 func(name); void func(char *p[]) { ... } とします。 char *p[ ]はchar **p としても同じです。つまりpはポインタへのポインタと考え ることができます。 「C言語」(河西朝雄著 ナツメ社)114頁 11.3
例題
27
名前データを表示する関数disp()を作りなさい。データの終わりはNULLとする。 /* reidai27.c 名前データを表示する関数disp()を作りなさい。データの終わりはNULLとす る。 */ #include <stdio.h> void disp(char *p[]) { int i = 0; while(p[i] != NULL){ printf("%s\n", p[i]); i++; } } int main() { int a[5][5], j, k;static char *nam[] = {"Candy", "Nancy", "Eluza", "Ann", "Rolla", "Emy", NULL};
disp(nam);
return 0; }
1.4
練習問題
27
例題27を応用して与えられたイニシャルの名前を表示する関数を作りなさい。 /* rensyu27.c 例題27を応用して与えられたイニシャルの名前を表示する関数を作りなさい。 */ #include <stdio.h>void disp(char *p[], char key) { int i = 0; while(p[i] != NULL){ if(key == *p[i]){ printf("%s\n", p[i]); } i++; } } int main() { int a[5][5], j, k;
static char *nam[] = {"Candy", "Nancy", "Eluza", "Ann", "Rolla", "Emy", NULL};
disp(nam, ’E’);
return 0; }