1. ホーム
  2. c

[解決済み] CのSizeof(char[])

2022-03-04 11:55:10

質問

このコードを考えてみましょう。

 char name[]="123";
 char name1[]="1234";

そしてこの結果

The size of name (char[]):4
The size of name1 (char[]):5

のサイズは、なぜか? char[] は常にプラス1ですか?

どのように解決するのですか?

コメントでMichaelが指摘したように、文字列はゼロで終端します。ですから、メモリ上では最初の文字列は次のようになります。

"123\0"

ここで \0 は1文字で、ASCII 値は0です。この場合、上記の文字列はサイズ4となります。

もしこの終端文字がなかったら、どこで文字列(または char[] が終了するのでしょうか?まあ、確かに、長さをどこかに保存しておくという方法もあります。そうしている言語もある。Cはそうではない。