私はchar *とchar []の違いを知っています。 char x[] = "xxxx"
文字の配列です。 char *y = "xxxx"
は、リテラル(const)文字列へのポインタです。 およびx[4]=='\0'
および*(y+4) == '\0'
もあります。 だからなぜsizeof(x)==5
とsizeof(y)==4
?char * xとchar xの間のsizeofの違い
2
A
答えて
4
アレイタイプのサイズは、アレイが占有するサイズです。 sizeof("xxxx")
と同じです。
ポインタタイプのサイズは、ポインタ自体が占有するサイズです。 sizeof(char*)
と同じです。
8
char x[] = "xxxx"
は、x x x xと\ 0を含むサイズ5の配列です。
char *y = "xxxx"
は、文字列へのポインタです。それは文字列ではなくポインタの長さなので、長さは4バイトです。
4
x
は、実際には"xxxx\0"
です。文字列の末尾にあるnulターミネータは、配列に5バイトを与えます。
ただし、sizeof(y)
は、ポインタのサイズを要求しています。これは、場合によっては4バイトになります。 y
が指しているのは、sizeof()
には何の影響もありません。 char *x
について
0
は、Xは、変更することができる尖った-するx++
、x+=2
によって位置等 char x[]
であるあなたは、X ++
関連する問題
- 1. Char x [50]とChar x [100]出力
- 2. 構造体 'const char * x' vs 'char x [30]'
- 3. 変更列のchar X
- 4. char型のX [2048]とキャッシュラインの問題
- 5. Javaなぜchar = char^charとchar^= charが違うのですか?
- 6. 32ビットシステム上のSizeof(const char **)
- 7. sizeof c構造体のcharフィールドのみ
- 8. -xと〜x + 1の違い
- 9. 符号なしのcharポインタとcharポインタの違い
- 10. MSVCのcharとCHARの違いは何ですか?
- 11. Cの "char * p"と "char * p"の違いは何ですか?
- 12. C++ const char *とchar *の違いを理解できない
- 13. C sizeof( 'a')= 4でsizeof(char)= 1の理由は何ですか?
- 14. char str []とchar * strの違いは何ですか?
- 15. void *とchar *の相違点
- 16. Cポインタの違いChar Int
- 17. -xとx * -1.0fの間に違いはありますか?
- 18. この場合、char []とchar *はどう違うのですか?
- 19. char *は間接レベルのchar(*)[100]
- 20. objective-c - charとunicharの違いは?
- 21. (function(x:<_))= xと(function(x:_))= xの違いは何ですか?
- 22. OpenGL 3.xと4.Xの違いは?
- 23. x = yとx = y == 1の違い
- 24. if(x){foo();の違い}とx? foo():0;
- 25. sizeof(int)(float)(char)i))intが定義されている場合(int)(float)(char)i;
- 26. なぜ文字列のchar *の代わりにshort *ですか? char *とunsigned char *の違い?
- 27. "argv"と "argv"が間違っていると、char **とint - なぜ?
- 28. ポインタとしてxを渡すとC sizeof((x))が機能しません
- 29. unsigned char *とchar *との間のキャストを再解析してください。
- 30. xとget( "x")の間に奇妙な違いがありますか?
が定義できないので、一定のポインタである配列、Xを意味ポインタでありますchar x [] = "xxxxxxxx"としてください。あなた自身も同じ質問をする...ヒント: '\ 0'を終了する –
@MitchWheat彼はxが5文字であることを理解していると思う。問題は、yはポインタなのでsizeof(y)= 4(バイト)です。 – mgiuffrida
@eli:はい、私はそれを知っています。しかし、私は直接の答えを与えたくなかった。魚を釣る人を教えてください.... –