変数の値とアドレス

前回のまとめ等

  • 配列
    • 同一型の複数のデータで、各データを添字によって区別する
    • 添字は0から始まる整数
  • 課題の解答例

課題の回答状況

  • ◯ コンパイルできるソースコードを提出している。
  • × 関数の定義の形が理解できていない。例: fizzbuzzの戻り値の型をintにしている、あるいは指定していない。
  • × 演算子を正しく理解していない。例: for文で i=i++
  • × 関数の使い方を理解していない。例: printf(“FizzBuzz “,i);

C言語における変数の値とアドレス、代入という操作について

変数の値とアドレスについて

  • 変数は値を入れておく箱のようなもの。箱の名前のことを「変数名」という。
  • 変数の値はコンピューターのメモリのどこかにに保存される。
  • 「どこか」を知りたい場合、アドレス演算子を使うと取り出すことができる。
  • 「アドレスを保存するための変数」があり、それを「ポインタ変数」という(教科書P.106、重要ポイント及び表7.1)。

この辺りをしっかり理解しておくと、Javaを勉強するときに役立つ。

代入という演算について

  • 「a = b」はbの値をコピーしてaの値にするという操作
  • 「func(a)」とした場合、aの値をコピーして関数にわたされる

値とアドレスとポインタに関するサンプルプログラム

address.c

実行して結果を確かめよう。

ポイント:

  • b: aを変更してもbの値は変わらない。
  • *c: aと同じアドレスなので、aを変更すれば*cも変わる(変わるというかaの別名が*cと言っても良い)。
  • 関数の引数は、値のコピー。

配列を引数とする関数

array.c

実行して結果を確かめよう。

ポイント:

  • 値がコピーされた新しい配列が作られるわけではない。
  • 先頭アドレスがコピーされる。
  • 値がコピーされた新しい配列が欲しい場合は、関数ないで配列を宣言し値をコピーする。

変数の入れ替え

次の実行例と同じになるように、変数の値を入れ替えるプログラムを完成させよう。

元のプログラム: swap.c