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