Shammer's Philosophy

My private adversaria

char* と char[]

char[] として文字列データを宣言した場合は、最後に '\0' を入れないといけない。この場合のサイズの差が気になったので確認してみた。

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

int main(int argc, char* args[]){
    char * value = "0123456789";
    char array[] = {'0','1','2','3','4','5','6','7','8','9','\0'};
    printf("char * value = %s size is %d.\n", value, strlen(value));
    printf("char[] array = %s size is %d.\n", array, strlen(array));
    return 0;
}

実行結果は以下の通り。

$ ./a.out 
char * value = 0123456789 size is 10.
char[] array = 0123456789 size is 10.
$

array で宣言しても、最後の '\0' はサイズに含まれないようだ。