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個の連載記事が公開中)
- 8件のコメント
#1 prometheus
- 2008/03/27 21:46:12
>ポインタ変数に値を代入し、それを出力する例を示す
ポインタnはど... 続きを見る
» 不適切なコメントを報告する
#3 tomita
- 2008/03/28 18:57:30
builder編集部 冨田です。
prometheusさん、mohnoさん、コメントあり... 続きを見る
» 不適切なコメントを報告する
Topic: Windows Vista SP1がついに出荷開始
- 昨日のトップ記事
- 2日前
- 3日前
- 4日前
- 5日前
- ホワイトペーパー
-
FAQを活用した顧客満足度向上と業務生産性向上のご提案
-
情報セキュリティのポリシー、対策基準、および実施手順- 第 1 部
-
【導入事例】NECインフロンティア株式会社様 情報を守る意識を社内に啓蒙。"pointsec"が紡ぎ出す、実践的情報漏えい対策
-
Select LAN Visibility LAN 上のアプリケーション・パフォーマンスへの詳細な可視性を提供
-
増え続けるファイルデータ。高まるデータ保護と事業継続への要求。データ可用性とデータ保護に優れ、かつコスト効率の高い分散型エンタープライズ環境を実現するためのヒントとは?
〜Brocade StorageXレプリケーション機能が可能にするリソース利用率の最適化とデータ保護
Power Center
- 話題のタグ
オープンソース
Firefox 3
Java
Python
Apache
PHP
フレームワーク
CSS
入門
PostgreSQL
iPhone
Webアプリケーション開発
IDE
Webデザイン
Mozilla
Microsoft
Database
セキュリティ
Safari
C/C++
開発環境
ブラウザ
SOA
Apple
Google
Tips
XHTML
小技
HTML
MySQL
イロハ
Leopard
仮想化
Firefox
Off Topic
リファレンス
ライブラリ
JavaScript
Flash
Eclipse
Ruby
Windows
Mac OS X
Ajax
Linux
OpenID
RIA
server
Ruby on Rails
iPod touch
話題のタグを見る »