C言語での文字列の扱い

文字列例示プログラム

#include <stdio.h>
main()
{
    char a[10];
    char *b, *b1;

    a[0] = 'a';
    a[1] = 'l';
    a[2] = 'p';
    a[3] = 'h';
    a[4] = 'a';
    a[5] = '\0';       /* 終の印 単に 0 でもよい */

    printf("%s\n", a); /* alpha と表示される */ 

    b = a;             /* b = &a[0];と書いても同じ */
    printf("%s\n", b); /* alpha と表示される */ 

    /* 上の b = a は先頭アドレスを代入しているだけなので
       配列 a の内容を変更すると printf("%s\n",b);で表示
       される内容も変わる */

    a[0] = 'A';
    printf("%s\n", b);   /* Alpha と表示される */ 
   
    /* "alpha" と書くと、上の a[?] のように
      'a' 'l' 'p' 'h' 'a' '0' がこの順に入った
      名前のない配列が確保され、そのアドレスを示す */
   
    b = "alpha";  /* '最初の a' の入った場所のアドレスが b に代入される */
    printf("%s\n", b); /* alpha と表示される */ 

    /* また、書式文字列を次のように与えることもできる */
    b1 = "%s\n";
    printf(b1, b);

    b1 = "<%s>\n";
    printf(b1, b);
}