「スッキリわかるC言語入門 第2版」でポインタを学ぶ
前回でも、「スッキリわかるC言語入門 第2版」を扱った。内容は導入部分の紹介であった。今回は、C言語のキモ「ポインタ」である。C言語の入門書は数多出版されてきている。各書ともC言語の理解に工夫を凝らしているが、筆者が注目するのは、全体的なわかりやすさと共に、やはり、「ポインタ」である。何と言ってもC言語の最大の特徴である。この箇所をいかにわかりやすくを追求しているのか注目したい。
アドレスとポインタ
ポインタとはアドレスを格納する特別な変数である。説明としてはシンプルだが、奥が深い。
まずはメモリの理解から。メモリとはコンピュータ内部で情報の記憶を担当するICチップである。ただし記憶できる容量は決まっている。8GBとか16GBとかのあれである。そして、プログラムは実行中に情報を一時的に記憶する必要がある。これを「変数」という。
変数とメモリの関係をまとめると、
変数宣言…メモリのある領域を確保する。
代入…メモリ領域の指定番地に情報を書き込む。
取得…メモリ領域の指定番地から情報を読み出す。
アドレスの解決
いよいよ「間接演算子」の説明だ。キャラクターたちの軽妙なやり取りで親しみやすい。
間接演算子…*ポインタ変数名
間接演算子は、ポインタ変数に格納されているアドレスを使ってメモリを読み取り、なんとその値に変わるのだ。筆者の覚え方・・アスタリスク→アタイ
*演算子(間接演算子)の役割・・通常の高級言語はメモリ領域に自由にアクセスできない。しかし、*演算子を使えばプログラム開発者がメモリの好きな番地に変数を生み出し、自由に読み書きできる。
*演算子の以下の注意点の記述が目新しいと感じられた。
*記号に混乱しない → 「int* a」は 型名に過ぎない。一方「*a 」は関節演算子となる。
現在利用されているプログラミング言語のほとんどが高級言語であり、扱いやすい。低級言語は、より直接的にコンピュータ制御が求められる。その代わりに、メモリを自由に操れる。C言語はその高級言語と低級言語の特徴を併せ持つ。この特徴こそが、ポインタの存在価値だ。本書ではメモリとアドレス、そして、ポインタの説明について、キャラクターのやり取り、プログラムコード、図表と様々な工夫がみられた。あとは、何度も繰り返しご自分の中で咀嚼してみることだろう。C言語の真の力を発揮させるためにはポインタの理解は避けては通れない。
コメント