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のままである。

    #include 

    int main( void ) {
      int *n;
      *n = 5;   /* ポインタ変数nに値5を代入 */
      printf( "%d\n", *n );  /* ポインタ変数nが持つ値(5)の出力 */
      return 0;
    }
  • 3件のコメント

#1 prometheus  - 2008/03/27 21:46:12

>ポインタ変数に値を代入し、それを出力する例を示す  ポインタnはど... 続きを見る
» 不適切なコメントを報告する

#2 mohno  - 2008/03/28 03:12:43

すでに指摘されていますが、筆者の方はポインタを理解されていないと思... 続きを見る
» 不適切なコメントを報告する

#3 tomita  - 2008/03/28 18:57:30

builder編集部 冨田です。 prometheusさん、mohnoさん、コメントあり... 続きを見る
» 不適切なコメントを報告する
  • コメントをするにはCNET_IDログインが必要です
ログイン パスワードを忘れた方  |  新規登録
  • 今日のトップ記事
  • 昨日
  • 2日前
  • 3日前
  • 4日前
  • 7日前