11回目 ポインタと配列 136 ポインタと配列 a[5]: a[0], a[1], …, a[4] 添え字で要素(アドレス)を 指定する。 ポインタを使った要素 指定方法はないか? a[0] a[1] a[2] a[3] a[4] ptr ptr+1 ptr+2 int *ptr; あるいは ptr = &a[0]) によって p に x の先頭アドレス をセットできる。 ptr++ とは? 例題 8-5 ptr = a ( 137 ポインタと文字列 文字列は配列として処理される。 char str[10]; scanf(“%s”, str); 文字列の読み込み 例題 8-6(1), 8-6(2) char s[25] = {“Tokyo, Nagoya, Osaka”}; s[0] s[1] s[2] T o k 138 1 ポインタ配列 例題 8-6(1)で char *s[3]とすると どうなるか? char *s[3] = {“Tokyo”, “Nagoya”, “Osaka”}; Tokyo Nagoya Osaka 例題8-6(1)を改造してこのような印字と なるようにする。 139 ポインタと引数 実引数としてアドレスを渡し、仮引数でこれを受け取る。 メイン関数で三つの整数を与え、関数sortで大きさの順 に並べ替え、結果をメイン関数で表示するプログラムを 作成しなさい。 実引数 sort( &x, &y, &z); 仮引数 sort(int *a, int *b, int *c) 関数のところで学習した「参照呼び出し」に相当する。 140 参照呼び出しによる方法(再掲) 実引数はアドレス変数 s = func1(&x, &y); int func1(int *p, int *q); 仮引数がポインタ変数である例 関数の中で計算され、 *p, *qに代入される値は 結局変数x, y に代入される。 関数内での計算結果を複数個呼び出した関数に 戻すことができる。 141 2 ポインタの演習問題 演習問題1: 生まれた年を西暦で入力した場合、干支が 表示されるようにしなさい。 さる、とり、いぬ、い、ね、うし、とら、う、たつ、み、うま ひつじ の順で生まれた年を 12で割った余りがこの干支 に対応している。 p.152 練習問題 5 142 3
© Copyright 2024 ExpyDoc