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' はサイズに含まれないようだ。