C/C++のポインタの機能--参照渡しののような処理
沖林正紀
2008/03/27 17:00
ポインタは、それに特化した内容の書籍も発刊されているほど、C/C++言語の最も特徴的な機能だ。配列とも深い関係を持つその機能を紹介しよう。
ポインタとは
ポインタはC/C++言語の最も特徴的な機能といえるもので、ポインタ変数と呼ばれるもので操作する。ポインタ変数の配列を宣言することもできる。また、多次元配列のように、ポインタのポインタというものも存在する。
このページをお読みいただいている読者にあっては、「C言語 ポインタ」「C++ ポインタ」などのキーワードでWeb検索をしたことがあるかもしれない。そうするとポインタに特化した内容の書籍をいくつか見つけられる。それだけ奥が深い機能ということである。
ポインタの用途
では、ポインタはどんなところで使われているのだろう。C/C++言語では、main以外にあらかじめ利用可能になっている関数が多数存在するが、その一覧には、*(アスタリスクあるいはアステリスク)が書かれているものをよく見かける。
これらはポインタ変数を表し、主に文字列の操作やファイルをはじめとするデータの入出力を行う関数において、ポインタの機能を利用することを表している。
ポインタ変数の宣言
ポインタ変数の宣言では、一般の変数の場合とは異なり、名称の先頭に*がつけられる。以下はnというポインタ変数を宣言する例である。ここでは、*nが表す値のデータ型はintとなるが、それ以外のデータ型でポインタ変数を宣言すれば、*nはその型の値を表すことになる。
int *n; /* int型の値を表すポインタ変数nの宣言 */ int n; /* 一般の変数 n を宣言する場合 */
続いて、*nを使って処理に用いる値を代入し、それを出力する例を示す。このときnには代入された値を記憶した場所(アドレス)が自動的に代入されるため、nそのものの値は実行されるごとに異なる可能性があるものの、*nが表す値は、処理中に変更されない限り5のままである。
#includeint main( void ) { int *n; *n = 5; /* ポインタ変数nに値5を代入 */ printf( "%d\n", *n ); /* ポインタ変数nが持つ値(5)の出力 */ return 0; }
- 特集: C/C++のイロハ:メモリ管理からオブジェクト指向まで (15個の連載記事が公開中)
- 3件のコメント
#3 tomita - 2008/03/28 18:57:30
builder編集部 冨田です。
prometheusさん、mohnoさん、コメントあり... 続きを見る
» 不適切なコメントを報告する
Topic: Windows Vista SP1がついに出荷開始
- 今日のトップ記事
- 昨日
- 2日前
- 3日前
- 4日前
- 7日前
- ホワイトペーパー
-
IMAP、DITA、ダイナミック パブリッシングによって大幅なコスト削減を実現した ITT Flygt 社
〜自社の技術文書作成システムを刷新し、時間とコストを大幅に削減〜
-
【導入事例】NECインフロンティア株式会社様 情報を守る意識を社内に啓蒙。"pointsec"が紡ぎ出す、実践的情報漏えい対策
-
Select Class-of-Service プライベート IP ネットワークの管理および最適化のためのツール
-
【導入事例】出光興産株式会社様:「カットオーバーの日」石油・化学プラント運転のノウハウと技能を継承し24時間365日の安全操業を支えるナレッジマネジメントシステム
-
分散化の進むオフィス環境においてファイル管理を効率化する方法 〜ファイル管理と移行のための最適なアプローチとは?
Power Center
- 話題のタグ
小技
Ajax
Ruby
オープンソース
MySQL
リファレンス
Microsoft
Mac OS X
仮想化
Vista
Firefox 3
Eclipse
Tips
JavaScript
ブラウザ
Database
SOA
Webデザイン
RIA
Mozilla
フレームワーク
IDE
開発環境
C/C++
Webアプリケーション開発
Leopard
Google
HTML
server
XHTML
イロハ
CSS
Ruby on Rails
Windows
入門
Apache
iPhone
iPod touch
Firefox
Apple
PostgreSQL
Python
Off Topic
Safari
OpenID
ライブラリ
Java
PHP
Flash
Linux
話題のタグを見る »
#1 prometheus - 2008/03/27 21:46:12