第7章 C言語のポインタ2 ~charポインタとchar配列~

 charポインタが、役立つのは次のような時です。 (他にもありますが、初心者の内は、charポインタを多用する必要はありません)

— リスト19–

#include <stdio.h>
#include <string.h>
#include <time.h>

void main()
{
  int  cnt, start, end;
  char array[512];
  char array2[512];

  /**
   * 長い文字列を、char 配列にコピーする
   */
  strcpy(array, "aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeee"
          "ffffffffffgggggggggghhhhhhhhhhiiiiiiiiiijjjjjjjjjj"
          "kkkkkkkkkkllllllllllmmmmmmmmmmnnnnnnnnnnoooooooooo"
          "ppppppppppqqqqqqqqqqrrrrrrrrrrsssssssssstttttttttt"
          "uuuuuuuuuuvvvvvvvvvvwwwwwwwwwwxxxxxxxxxxyyyyyyyyyy"
          "zzzzzzzzzz");

  /**
   * 文字列のコピーを繰り返す
   * ・コピー処理の開始時間と、終了時間を取得する
   */
  start = clock( );
  for (cnt = 0; cnt < 1000000; cnt++) {
    strcpy(array2, array);
  }
  end = clock( );

  /**
   * コピー処理の開始時間と、終了時間を表示する
   */
  printf("開始時間は、%d\n", start);
  printf("終了時間は、%d\n", end);
}

 実行してみて、どれくらいの時間が掛かりましたか?

 ちなみに、Pentium75MHzのマシンで約8秒、PentiumⅡ266MHzのマシンでは0.3秒でした。 皆さんのマシンの性能がわかりませんので、あまりにも長すぎたり短すぎたら、 ループ回数を調節してやって見てください。

 次に、char配列を使っていたのを、charポインタにしてみましょう。

— リスト19`–

#include <stdio.h>
#include <string.h>
#include <time.h>

void main()
{
  int cnt, start, end;
  char array[512];
  char *ptr;

  /**
   * 長い文字列を、char 配列にコピーする
   */
  strcpy(array, "aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeee"
          "ffffffffffgggggggggghhhhhhhhhhiiiiiiiiiijjjjjjjjjj"
          "kkkkkkkkkkllllllllllmmmmmmmmmmnnnnnnnnnnoooooooooo"
          "ppppppppppqqqqqqqqqqrrrrrrrrrrsssssssssstttttttttt"
          "uuuuuuuuuuvvvvvvvvvvwwwwwwwwwwxxxxxxxxxxyyyyyyyyyy"
          "zzzzzzzzzz");

  /**
   * 文字列のコピーを繰り返す
   * ・コピー処理の開始時間と、終了時間を取得する
   */
  start = clock( );
  for (cnt = 0; cnt < 1000000; cnt++) {
    ptr = &(array[0]);
  }
  end = clock( );

  /**
   * コピー処理の開始時間と、終了時間を表示する
   */
  printf("開始時間は、%d\n", start);
  printf("終了時間は、%d\n", end);
}

 実行結果は、どうなりましたか?

< 前のページへ

Pagetop