第6章 ポインタ 第6章 ポインタ(練習問題解説) 1 P.23 練習問題(問1) (1) int型変数a,bのアドレスを引数として送ると、 a,bの値が入れ替わる関数を作れ 関数の戻り値の型は? aとbが入れ替わるという副作用がある だけなので、戻り値なし!(void) 関数の引数は? aとbのアドレスが必要!! 2つのポインタ変数だね! 骨組みを書いてみよう!! 第6章 ポインタ(練習問題解説) 2 P.23 練習問題(問1) (2) 戻り値はなし 引数は二つのポインタ変数 void swap(int* a, int* b){ 何らかの処理 } 2つの変数を入れ替えるには? もうひとつ変数を作る必要があった 例えば変数a,bを入れ替えるには a = b; b = a; temp = a; a = b; b = temp; 第6章 ポインタ(練習問題解説) 3 P.23 練習問題(問1) (3) ポインタ変数になっても入れ替えは何も変わらない! 実際に書いてみよう!! void swap(int* a, int* b){ int temp; temp = *a; *a = *b *b = temp; } これで正常に動くよ!! 第6章 ポインタ(練習問題解説) 4 P.23 練習問題(問2) (1) 点(x,y)をx軸方向にa,y軸方向にb平行移動した 点(x2,y2)を取得する関数を作れ 関数の戻り値の型は? X2とy2を返したい。でも2つ値を返すこ とはできない! ポインタで値を返そう! だから戻り値はなし(void) 第6章 ポインタ(練習問題解説) 5 P.23 練習問題(問2) (2) 関数の引数は? 点の座標x,yと 移動したい量 a, b 値を返すためのアドレスx2,y2 が必要だね 骨組みを書いてみよう!! 第6章 ポインタ(練習問題解説) 6 P.23 練習問題(問2) (3) void multiply(double x, double y, double a, double b, double* x2, double* y2){ 何らかの処理 } 実際 x2,y2には何を代入すればいい? 計算しよう!! x2 = x + a y2 = y + b これをx2,y2に代入しよう! 第6章 ポインタ(練習問題解説) 7 P.23 練習問題(問2) (4) void multiply(double x, double y, double a, double b, double* x2, double* y2){ *x2 = x + a; *y2 = y + b; } これで正常に動くよ!! 第6章 ポインタ(練習問題解説) 8
© Copyright 2024 ExpyDoc