ポインタ(序論、サンプルコード)


 このページでは先の ポインタ(序論)で説明した例を実際のソースコードで再現します。実際に動きを確認することで、先のページで納得していただけなかった方にも、理解していただけるのではないかと思います。このページで掲示しているソースファイルはサーバーにアップしてリンクが張ってあるので、そちらをダウンロードしてもらって、実際にコンパイルして実行して下さい。先にも書きましたが、初心者の方を想定していないので、お持ちのコンパイラでどうやってコンパイルするのか等は、聞かないで下さいね。プログラムは一瞬のうちに実行されてしまうので、プログラムの最後にキーボードから入力を待つ関数を加えました。プログラムの終了にはリターンキーを押して下さい。ソースの内容はANSI C の範囲なので、このコードがコンパイルできないコンパイラはもぐりでしょう。僕は Microsoft Visual C++を使ってコンパイルしました。実行して動作も確認していますが、コンパイル時に消費税を加えるところで warning が出てます。(なぜだか、分かりますか?)又、このページのソースコードは見栄えをよくするために

全角スペース、全角記号
を使っているので、マウス等で直接コピーをとってコンパイルをかけるとコンパイルエラーが出ます。


サンプルコード


<ポインタを使わない場合>

ソースファイル(0.5K-Byte)
------------------------------ sample1.c START ------------------------------
    #include <stdio.h>
    
    void addTax( int data )
    {
      data = data * 1.05;  /* 消費税を加える */
    
      printf( "Tax Added : data = %d\n", data ); /* 画面に出力 */
    
      return;
    }
    
    main ()
    {
      int pay;   /* 基データ */
      char buf;  /* キー入力を待つ */
    
      pay = 1000; /* 初期値は1000円 */
    
      printf( "Before addTax : pay = %d\n", pay ); /* 画面に出力 */
    
      addTax( pay );
    
      printf( "After addTax : pay = %d\n", pay ); /* 画面に出力 */
    
      buf = getchar();   /* リターンキーでプログラム終了 */
    
      return 0;
    }
------------------------------ sample1.c END ------------------------------

<ポインタを使う場合>

ソースファイル(0.5K-Byte)
------------------------------ sample2.c START ------------------------------
    #include <stdio.h>
    
    void addTax( int* data )
    {
      *data = *data * 1.05; /* 消費税を加える */
    
      printf( "Tax Added : data = %d\n", *data ); /* 画面に出力 */
    
      return;
    }
    
    main ()
    {
      int pay;  /* 基データ */
      char buf; /* キー入力を待つ */
    
      pay = 1000;  /* 初期値は1000円 */
    
      printf( "Before addTax : pay = %d\n", pay );   /* 画面に出力 */
    
      addTax( &pay );
    
      printf( "After addTax : pay = %d\n", pay );   /* 画面に出力 */
    
      buf = getchar();    /* リターンキーでプログラム終了 */
    
      return 0;
    }
------------------------------ sample2.c END ------------------------------

 実行結果は、分かりましたが? ここで、結果を表示するとコンパイルしてもらえないかも知れないのであえて載せません。あとは、このポインタをどのように使うかが、問題ですね。次回はポインタの実用的な使い方を紹介したいと思います。


配列を使う(配列はポインタ)

C言語講座トップページ

TOP-PAGE

Web-Page制作者e-mailアドレス