サイトマップ / C言語講座出入り口総目次目次:ポインタ>ポインタの指す位置

青い直線

ポインタの指す位置

青い直線

[データの書き換え]←このソース→[ポインタの新しい宣言法]

/* 前回は、ポインタの指す変数の値を、

    (*s)++;

とすることで増加させました。前々回に簡単に触れましたが、今回はポインタの指す位置を増加させます。

    char str[ ] = "abcde";

str[ ]は要素数6の文字の配列(文字列)です。Cでは、文字列の末尾にはヌル文字('\0 ')が付加されます。[ ]の中で配列の要素数を指定するなら、ヌル文字も含め6としなければなりません。上記の[ ]の中が空白なのは指定しなくてもコンパイラが数えてくれるからです。

str[ ]を宣言し、下記のように初期化することもできます。

    char str[6];

    str[0] = 'a';
    str[1] = 'b';
    str[2] = 'c';
    str[3] = 'd';
    str[4] = 'e';
    str[5] = '\0';

配列の名前

配列の名前'str'はこの文字列の最初の要素のアドレスを指しています。

重要:配列名は配列の最初の要素のアドレスを指す。

'str'はポインタではないのでインクリメントなどポインタに対する操作はできません。str[ ]の中身を見る(参照する)方法は2つあります。

最初の方法は配列の添字を使います。

    putchar(str[0]);

もう一つは、

char型のポインタsにstrのアドレスを代入します。sにはstrの先頭のアドレスが入っています。

    char *s;
    s = str;
putchar(*s);

ポインタの演算

では次の文字を参照するにはどうしたら良いでしょうか。

    s++;

sの指す位置をインクリメントします。このような操作をポインタの演算といいます。

ソースプログラムの説明

ソースプログラムの中に次に示す記述があります。

    while (str[i] != '\0') {        // ヌル文字に達するまで
        putchar(str[i]);            // 配列の要素を表示
        i++;                        // 配列の添字をインクリメント
    }

配列の添字を使って、配列の要素を参照しています。

    while (*s != '\0') {            // ヌル文字に達するまで
        putchar(*s);                // s の指す中身を表示
        s++;                        // s の指す位置をインクリメント
    }

こちらはポインタによる参照です。こちらの方が実行速度が速くなります。 */

/* ここからソースプログラム */

#include <stdio.h>

void main(void);

void main(void)
{
    char str[ ] = "abcde";
    int i = 0;        /* 配列の添字として使う */
    char *s;          /* char 型ポインタ */

    while (str[i] != '\0')  {       /* ヌル文字に達するまで */
        putchar(str[i]);            /* 配列の要素を表示 */
        i++;                        /* 配列の添字をインクリメント */
    }
    printf("\n");                   /* 1行改行 */

    s = str;                        /* str の最初の要素のアドレスを s に代入 */
    while (*s != '\0') {            /* ヌル文字に達するまで */
        putchar(*s);                /* s の指す中身を表示 */
        s++;                        /* s の指す位置をインクリメント */
    }
    printf("\n");                   /* 1行改行 */

}

/* ここまでソースプログラム */

[データの書き換え]←このソース→[ポインタの新しい宣言法]

青い直線

/* (C) 2000- YFプロ. All Rights Reserved. */    提供:C言語講座−それ自体コンパイルできる教材を使った講座です−

青い直線

サイトマップ / C言語講座出入り口総目次目次:ポインタ>ポインタの指す位置