文字列の長さを取得しようとしていますが、間違った値を取得しています。長さはわずか 4 文字です。どうしてこれなの?私はsizeof()正しく使用していますか?
#include <stdio.h>
int main(void)
{
char *s;
int len;
s = "hello world";
len = sizeof(s);
printf("%d\n", len);
}
文字列の長さを取得しようとしていますが、間違った値を取得しています。長さはわずか 4 文字です。どうしてこれなの?私はsizeof()正しく使用していますか?
#include <stdio.h>
int main(void)
{
char *s;
int len;
s = "hello world";
len = sizeof(s);
printf("%d\n", len);
}
sizeof演算子はポインタのサイズを返しています。文字列の長さが必要な場合は、strlen関数を使用します。
配列 (例: char s[] = "hello world") を持っていたとしても、sizeof演算子は文字列終端文字を含む配列の長さを返すため、間違った値を返します。
ああ、補足として、文字列ポインタがリテラル文字列を指すようにする場合は、それを宣言する必要がありますconst char *。文字列リテラルは定数であり、変更できないためです。
sポインタとして宣言しました。ポインターに適用すると、ポイントされてsizeof()いる要素のサイズではなく、ポインターのサイズを返します。あなたのシステムでは、ポインターのサイズはcharたまたま 4 バイトです。したがって、出力として 4 が表示されます。