第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); }
実行結果は、どうなりましたか?
< 前のページへ 次のページへ >-
IS 559680 / ISO27001
認証範囲 本社、芝大門オフィス情報セキュリティ基本方針 -
個人情報保護方針
個人情報の取扱いについて
保有個人データ又は
第三者提供記録に関する
事項の周知について
特定個人情報の取扱いについて -
FS 671851 / ISO9001
認証範囲 本社、芝大門オフィス品質方針