C/C++のポインタの機能--配列との関係
沖林正紀
2008/03/28 17:00
ポインタは配列と深い関係があることを前回言及したが、今回はそれが具体的にどのようなことなのかを説明していきたい。
現在、本稿には技術的な誤りが存在するため、詳細をレビュー中です。
初めてご覧になる方は、コメント欄もあわせてお読み下さい。
また、読者の皆様には引き続き、コメントなどでご意見を頂けましたら幸いです。
初めてご覧になる方は、コメント欄もあわせてお読み下さい。
また、読者の皆様には引き続き、コメントなどでご意見を頂けましたら幸いです。
ポインタ変数の配列
ポインタ変数も配列を宣言できる。これは文字列の配列を表す場合によく用いられる。以下にその例を示す。
char *s[] = { "Japanese", "English", "Chinese" };
printf( "%s\n", s[ 0 ] ); /* Japanese と出力される */
printf( "%s\n", s[ 1 ] ); /* English と出力される */
printf( "%s\n", s[ 2 ] ); /* Chinese と出力される */
printf( "%s\n", *s ); /* Japanese と出力される */
printf( "%s\n", *(s + 1) ); /* English と出力される */
printf( "%s\n", *(s + 2) ); /* Chinese と出力される */
さきほど*sで1つの文字列を表していたが、この例では*s[]によって複数の文字列を要素とする配列を表している。ただ、さきほどs[]でも*sでも1つの文字列を表すことができ、処理するにあたって特に変わりないことを説明したところだ。
それなら、*s[]を**sのように記述したらどのように処理されるだろう。以下の例をご覧いただきたい。
char *s[] = { "Japanese", "English", "Chinese" };
printf( "%c\n", **s ); /* J と出力される */
printf( "%c\n", **(s + 1) ); /* E と出力される */
printf( "%c\n", **(s + 2) ); /* C と出力される */
s は*s[]の最初の文字列の頭文字であるJを表している。同様に(s + 1)は2番目の文字列の頭文字E、*(s + 2)は3番目の文字列の頭文字Cを表していることが分かる。それ以外の文字をポインタ変数で表すには、どうしたら良いのだろう。
次回は、この続きを説明していきたい。
- 31人の推薦記事
- 0人がクリップ
-
ソーシャルブックマーク(-)
- トラックバック(0)
- コメント(8件)
- 特集: C/C++のイロハ:メモリ管理からオブジェクト指向まで (15件)
- 今日のトップ記事
- 2日前
- 3日前
- 4日前
- 6日前
- 7日前
- ホワイトペーパー
- 話題のタグ
Safari
Mac OS X
Ruby
Off Topic
オープンソース
iPhone
Internet Explorer
XHTML
Apache
CSS
Flash
Eclipse
Python
ライブラリ
Google
RIA
Firefox
イロハ
PHP
iPod touch
SOA
Ajax
Tips
ブラウザ
Microsoft
Linux
Apple
Firefox 3
HTML
Mozilla
仮想化
Webアプリケーション開発
フレームワーク
Windows
開発環境
まとめ
C/C++
入門
Java
IDE
Database
JavaScript
MySQL
小技
server
Ruby on Rails
Webデザイン
リファレンス
Adobe
Leopard
話題のタグを見る »
Firefox 3が対応したdisplayプロパティの値(3) - inline-table
MSもアドビも学生さんに開発ソフトを無償提供
「Economist」のトップページがリニューアル
あなたがプログラムを理解できない10の理由:第2回
新APIまもなく登場--Google Developer Day 2008の見所とは?
仮想化によるコスト削減を見える化:オンラインTCOカリキュレータ
内部統制対策を実現するIT運用管理ツール
リスティング広告における競争優位性の維持
-Simplify IT- ITをシンプルに 連載第2回