いくつかのコードをテストするために、C で次のプログラムを作成しました。
int main(int argc, char *argv[])
{
char *a = "hello ";
char *b = "there";
char *c = malloc(100);
strcat(c, a);
strcat(c, b);
printf("length of a is %d\n", strlen(a));
printf("length of concatenated string is %d\n", strlen(c));
return 0;
}
これの出力は次のとおりです。
length of a is 6
length of concatenated string is 11
malloc を実行する代わりに、次のようにしました (残りのコードは同じです)。
char c[100];
出力は次のように変わります。
length of a is 6
length of concatenated string is 12
char 配列にポインターを使用すると、連結された文字列のサイズが変わる理由がわかりません。