第7章 C言語のポインタ2 ~charポインタとchar配列~
全くと言っていいほど、時間が掛からなかったはずです。
これは、strcpyが一文字づつコピーするのに対して、 住所(アドレス)の代入は、ある住所の表札を入れ替えるようなものだからです。 だから、文字列が長くなればなるほど、charポインタを使った方が有効になります。
以上が、char ポインタの説明です。
最後に一つだけ。
関数 printf や関数 strcpy に文字列の入った変数を引数として渡す時を思い出してください。 変数を「char array[256];」と配列で宣言しておいて、 引数として渡すときは「array」とだけ記述していますね。 何故、カギ括弧を付けずに、「array」とするだけで良いのでしょうか?
皆さんの中には、関数 printf を習ったばかりの頃から、疑問に思っていた人はいないでしょうか? 実は、これは意外と難しいことなので、なるべく説明を後回しにしていました。
C言語では、関数に対して、配列の全体を渡すことができないためです。 ですから、配列の先頭のアドレスだけを渡して、 そこから NULL 文字までを文字列だと判断してもらうのです。
配列の先頭のアドレスは、習ったばかりなのでわかりますね。 リスト18やリスト19の &(array[0]); のことです。
実は、&(array[0]) という記述は、array だけとしても、全く同じになります。 時間があれば、リスト18やリスト19を使って試してみてください。
ptr = &(array[0]); が、ptr = array; になります。 通常は省略されている方をよく使います(たまに、&array[0]を使う人もいます)。
そもそも、array[5]という記述自体が、 「配列の先頭のアドレスであるarrayから、5つ数えた場所にある値を見ろ」 という意味だったのです。ですから、[ と ] は+や-と同じ、 演算子(計算に使う記号)の仲間だったのです。
まぁ、この辺は難しいので、わからなくても構いません。
< 前のページへ 次のページへ >-
IS 559680 / ISO27001
認証範囲 本社、芝大門オフィス情報セキュリティ基本方針 -
個人情報保護方針
個人情報の取扱いについて
保有個人データ又は
第三者提供記録に関する
事項の周知について
特定個人情報の取扱いについて -
FS 671851 / ISO9001
認証範囲 本社、芝大門オフィス品質方針