char* と char[] の違いを知っています。
char x[] = "xxxx"
文字の配列です。
char *y = "xxxx"
リテラル (const) 文字列へのポインタです。そしてx[4]=='\0'
、そして*(y+4) == '\0'
あまりにも。sizeof(x)==5
では、なぜsizeof(y)==4
ですか?
質問する
7481 次
4 に答える
10
char x[] = "xxxx"
xxxx と \0 を含むサイズ 5 の配列です。
char *y = "xxxx"
文字列へのポインタです。長さは 4 バイトです。これは、文字列ではなくポインタの長さであるためです。
于 2012-05-12T02:22:27.320 に答える
4
配列型のサイズは、配列が占めるサイズです。と同じsizeof("xxxx")
。
ポインター型のサイズは、ポインター自体が占めるサイズです。と同じsizeof(char*)
。
于 2012-05-12T02:22:46.087 に答える
4
x
は本当に"xxxx\0"
。文字列の末尾にあるヌル ターミネータは、配列に 5 バイトを与えます。
ただし、sizeof(y)
ポインターのサイズを要求しています。これは、たまたま4バイトです。y
を指しているものは、 には影響しませんsizeof()
。
于 2012-05-12T02:23:06.513 に答える
0
の場合char *x
、x はポインターです。つまり、ポインターの位置を 、 などで変更できますx++
。x+=2
配列
char x[]
は定数ポインターであるため、x++ は実行できません。
于 2013-06-03T00:24:05.857 に答える