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日前
- ホワイトペーパー
Power Center
- 話題のタグ
Mac OS X
Webデザイン
Linux
仮想化
入門
Tips
Off Topic
Firefox 3
Webアプリケーション開発
Windows
Vista
Apache
RIA
Database
Mozilla
Microsoft
SOA
PostgreSQL
Ajax
PHP
server
ブラウザ
オープンソース
ライブラリ
小技
Leopard
Ruby on Rails
JavaScript
Java
OpenID
CSS
XHTML
Apple
開発環境
Flash
Python
HTML
Ruby
C/C++
Google
IDE
Safari
iPhone
イロハ
リファレンス
フレームワーク
Firefox
Eclipse
iPod touch
MySQL
話題のタグを見る »
#1 prometheus - 2008/03/27 21:46:12