回答
有在端部的後'\0'
。
這就是我想的....謝謝。 – 2010-09-30 22:29:34
它與#define
無關。的字符陣列將具有相同的大小:
const char str[] = { "test1" };
sizeof (str) == 6
原因此字符串是6個字節長的是,在C字符串具有終止NUL字符來標記結束。
這不是一個數組,它是一個指向字符串的指針,'sizeof(str)'將返回機器指針類型的大小。 – 2010-09-30 22:31:12
這意味着什麼'const char str [] =「test1」;'與const char str [] = {'t','e','s','t','1 ','\ 0'};' – aschepler 2010-09-30 22:33:40
恩,是的。我感覺真的很糟糕,尤其是因爲我在輸入答案之前考慮了sizeof指針和sizeof指針之間的區別,然後我的手指反正敲錯了鍵。 – 2010-09-30 22:38:00
字符串中C是char
小號陣列,具有空終止即它們與\0
結束。常見的替代方法是Pascal樣式的字符串,其中字符串存儲不帶空終止符的數組char
,並將字符串的長度存儲在某處。
在C和C++以及字符串文字的語境中談到Pascal字符串是非常具有誤導性的。 – 2010-09-30 22:39:37
a #define
只是在編譯之前進行文本替換。
#define STR "test1"
sizeof(STR);
實際上是由編譯器爲
sizeof("test1");
現在看到的這是什麼原因6,而不是5?因爲在字符串的末尾有一個空終止符。
什麼人說...... 但
在C
,預處理標記不採取任何空間。這取決於你如何使用它們
#define STR "test1"
char x[] = STR; /* 6 bytes */
char *y = STR; /* sizeof (char*) bytes (plus possibly 6 bytes) */
int ch = STR[3]; /* 1 byte (or sizeof (int), depending on how you look at it) */
if (ch == STR[1]) /* 1 byte (or sizeof (int) or no bytes or ...) */
printf("==>" STR "<==") /* 5 bytes ??? */
最新的C編譯器有一個功能,想,如果編寫程序的人處於學習階段,並給出答案,這使得他們搜索日益廣泛和深入,從而豐富自己的知識。
編程了一段時間後,這取決於你的學習,你可能會看到值下降到5 ;-)
JK ..因爲別人說,它象徵什麼都不具有諷刺意味需要結束字節。
爲什麼這需要6個字節?
實際上,它需要(6個字節×你使用它的次數),因爲它是一個預處理宏。
嘗試用const char *STR = "test1"
代替。
未指定相同的字符串文字是否是不同的對象。即表達式「test1」==「test1」'的值可能爲真或假。這甚至可以取決於編譯器設置。 – MSalters 2010-10-01 07:41:25
- 1. 一個字符串需要多少個字節?字符?
- 2. 需要「字符串」爲:字符串
- 3. PHP:獲取字符串A和字符串B之間的字符串(多個字符串需要被搜索)
- 4. 需要將多少個字符添加到字符串才能生成迴文
- 5. 字符串與字節字符串
- 6. 多少字節將一個字符串佔用,少信
- 7. 字符串需要包含2個字
- 8. 字符串替換多個字符串
- 9. 需要多長時間將8個字符的字符串與32個字符的字符串進行比較
- 10. 字符串到字節[]和字節[]字符串
- 11. 字節到字符串或字符串到字節?
- 12. 在一個字符串中有多少次子字符串[Java]
- 13. 檢查字符串多少次是一個字符串
- 14. Java單個字符由多個字節表示的字符串
- 15. 需要用另一個字符串替換部分字符串
- 16. 需要從一個字符串中提取字符串
- 17. Android/Java字符串與不需要的字節串「\ n」
- 18. 字符串文字和刪除不需要的字符
- 19. 接受需要字符串文字的函數中的字符。
- 20. Trace.Write(字符串,字符串)和Trace.WriteLine(字符串,字符串)不要
- 21. 字符串文字到字節
- 22. 有多少個空字節,連接字符串C
- 23. 這個字節字符串實際佔用多少內存?
- 24. JSON文件爲byte [],需要去字節[]以JSON字符串
- 25. 字節到字符串 - 模糊字符
- 26. 我如何#define一個無符號字符*字符串?
- 27. 需要字符串操作
- 28. 需要從字符串裏
- 29. 字節[]再次字符串到字節[]
- 30. 字節數組字符串
你有沒有在代碼中調用'STR'宏?如果沒有,那麼這不需要字節... – 2010-09-30 22:36:16