この
ポインタを利用する場合、注意しなければいけない点がいろいろとあります。中でも、非常に重要なのは「ポインタの値をコピーした変数どうしでは、すべて同じデータを指し示す」という点でしょう。
例えば、あるテキストを保管するポインタ変数を用意します。そしてこれを、別のポインタ変数に代入します。するとこの時、2つのポインタ変数は「同じテキストを示す」ということはわかるでしょうか?
両者は、テキストが保管されているアドレスをコピーしているわけですから、
どちらのポインタ変数にも同じアドレスが保管されます。つまり、どちらも同じアドレスにあるテキストを示しているわけです。
下に、ちょっとしたサンプルを用意しました。まず、
txt1というchar配列にテキストを保管し、これをそのままcharポインタ変数
txt2に代入します。そして、
txt1の配列の要素をいろいろと変更してみます。そして
txt2を
printfしてみると……修正した
txt1のテキストが出力されてしまいます。どちらも同じアドレスの値なので、片方で修正すれば、自動的にもう片方も値は変わってしまうのです(というか、そもそも同じ値を共有しているんですが)。
こんな具合に、ポインタの値を変数に代入するということは、「値をコピー」するのでなく「値の
アドレスをコピー」するということをしっかり理解してください。これはポインタ利用の基本中の基本ですから。
※……で、Objective-Cではどうなの?
というわけで、「最初にぶち当たる壁」とかいいながら、割とすらすら説明をしてきてしまいました。正直、「なんか、わかったようなわからないようなもやもやした感じ」の人もけっこくいると思います。
が、それでいいんです。「
ポインタというものがあって、
アドレスを値として扱っている」という、基本的なことだけわかっていれば、そんなに具体的にポインタの使い方をマスターする必要はありません。なぜって、あなたの目標は「C言語をマスターすること」ではなくて、「Objective-Cを学ぶこと」なんですから。でしょう?
Objective-Cのプログラミングをするとき、そんなむき出しの
ポインタを使ってあれこれ操作することなど、ビギナーのうちはあまりありません。Objective-Cでは、「
id型」という
ポインタを利用した型があって、それでオブジェクトを色々扱うんですが、あまり「
ポインタ」ということを意識しないでいいような形になっています。
ですから、「とりあえず、Objective-Cを勉強するためにCの基本を覚えておく」という目的からすれば、
ポインタに関するこの程度の知識がごくざっと頭に入っていれば十分でしょう。――もちろん、本格的にObjective-Cを使うようになれば別ですよ。しっかり
ポインタをマスターしたほうがいいです。でも、今の段階では、「
ポインタがわからないとダメ!」ってことはないです。このあたりの面倒くさい話はざっと流して、とっとと先へ進みましょう。