文字列とポインタ

 以前、文字列のところで、このようなプログラムを扱いました。

#include <stdio.h>

int main(int argc, const char * argv[])
{
    
    // insert code here...
    char str[30];
    
    str[0] = 'a';
    str[1] = 'b';
    str[2] = 'c';
    str[3] = 'd';
    str[4] = 'e';
    
    printf("str = %s", str);
    
    return 0;
}

 文字列は、文字型の配列として扱う、という内容でした。また、前回の内容で、「(ポインタ) = (配列名)」という書き方で、配列の先頭の要素にアクセス出来るということをお伝えしました。つまり、文字列は、ポインタで扱った方が使いやすいということになります。

 以下のプログラムを作成し、実行してみて下さい。

#include <stdio.h>

int main(int argc, const char * argv[])
{
    
    // insert code here...
    char str[30];
    char *pointer;
    
    str[0] = 'a';
    str[1] = 'b';
    str[2] = 'c';
    str[3] = 'd';
    str[4] = 'e';
    str[5] = '\0';
    
    pointer = str;
    
    printf("アドレス:%p、中身:%s\n", pointer, pointer);
    
    return 0;
}

 以下のように表示されるかと思います。

アドレス:0x7fff5fbff820、中身:abcde

 「%p」にも「%s」にも、pointerのアドレスを指定できます。このように、文字列の場合は、ポインタを利用した方が良く、今後の記事で扱うことになる文字列関連の処理でもポインタやアドレスといったものを利用することになります。

 ポインタに関しては以上となります。今後の記事で扱うテーマでも頻繁にポインタは出てきますので、ゆっくりでいいですから理解していくようにしていきましょう。

■スポンサーリンク

このページの先頭へ