前回のまとめ等
- 配列
- 同一型の複数のデータで、各データを添字によって区別する
- 添字は0から始まる整数
- 課題の解答例
課題の回答状況
- ◯ コンパイルできるソースコードを提出している。
- × 関数の定義の形が理解できていない。例: fizzbuzzの戻り値の型をintにしている、あるいは指定していない。
- × 演算子を正しく理解していない。例: for文で i=i++
- × 関数の使い方を理解していない。例: printf(“FizzBuzz “,i);
C言語における変数の値とアドレス、代入という操作について
変数の値とアドレスについて
- 変数は値を入れておく箱のようなもの。箱の名前のことを「変数名」という。
- 変数の値はコンピューターのメモリのどこかにに保存される。
- 「どこか」を知りたい場合、アドレス演算子を使うと取り出すことができる。
- 「アドレスを保存するための変数」があり、それを「ポインタ変数」という(教科書P.106、重要ポイント及び表7.1)。
- 同一型の複数のデータで、各データを添字によって区別する
- 添字は0から始まる整数
この辺りをしっかり理解しておくと、Javaを勉強するときに役立つ。
代入という演算について
- 「a = b」はbの値をコピーしてaの値にするという操作
- 「func(a)」とした場合、aの値をコピーして関数にわたされる
値とアドレスとポインタに関するサンプルプログラム
実行して結果を確かめよう。
ポイント:
- b: aを変更してもbの値は変わらない。
- *c: aと同じアドレスなので、aを変更すれば*cも変わる(変わるというかaの別名が*cと言っても良い)。
- 関数の引数は、値のコピー。
配列を引数とする関数
実行して結果を確かめよう。
ポイント:
- 値がコピーされた新しい配列が作られるわけではない。
- 先頭アドレスがコピーされる。
- 値がコピーされた新しい配列が欲しい場合は、関数ないで配列を宣言し値をコピーする。
変数の入れ替え
次の実行例と同じになるように、変数の値を入れ替えるプログラムを完成させよう。
元のプログラム: swap.c
1 2 3 4 |
aは1、bは2 xは1、yは2 xは2、yは1 aは2、bは1 |