3
A
回答
-4
插入終止:
char a[4]={'U','S','A', '\0' };
4
COUT將打印直到遇到\ 0。
現在,如果碰巧在物理內存中,數組旁邊的字節值爲0,cout將把它作爲終止符。它可能發生,因爲下一個字節可能有任何垃圾值,包括0.
但是,不能保證你的陣列邊界旁邊會有什麼。在其中一種情況下,您發現0並不意味着它會繼續用於其他情況。實際結果是未定義的行爲,在這種特殊情況下,它與數組以null結尾的情況下預期的cout行爲相匹配。
-3
Q:如果a是長度爲3的字符數組,並且 沒有內存'\ 0',它如何打印USA?
只需打印陣列中的所有字符。
例如
for (char c : a) std::cout << c;
std::cout << std::endl;
在這種情況下終止零不是必需的。
如果你的編譯器不支持基於for語句的範圍內,那麼你可以使用一個普通的循環:
for (size_t i = 0; i < sizeof(a); i++) std::cout << a[i];
std::cout << std::endl;
或者實際上你可以使用成員函數write
std::cout.write(a, sizeof(a));
如果你將它打印以下方式
std::cout << a;
那麼程序就會有你ndefined行爲。不能保證在數組之後內存中會有一個零字節。
相關問題
- 1. 堆大小錯誤字符串
- 2. C#WebClient 404錯誤大字符串
- 3. C++錯誤字符太大
- 4. C++字符串:: size_type錯誤
- 5. C++字符串錯誤
- 6. C++奇怪的字符串大小
- 7. C#字符串格式未知大小
- 8. C#中的固定字符串大小#
- 9. C/C + +字符串與ARM seg錯誤錯誤總線錯誤
- 10. 字符串符+ =串::調整大小()
- 11. C++字符串到字節錯誤
- 12. OracleParameterCollection.Add(字符串,類型,字符串,大小,字符串)
- 13. ruby + odbc + freetds MSSQL錯誤負的字符串大小
- 14. 使用字符串鍵索引時錯誤的lua表大小
- 15. 字符串緩衝區太小錯誤
- 16. MpAndroidChart縮小字符串值錯誤
- 17. 大小類型字符串
- 18. UTF字符串的大小
- 19. 哈希字符串大小
- 20. JAVA字符串HTML大小
- 21. C#添加字符串圖像,用最大的字體大小
- 22. C:fscanf和字符/字符串大小
- 23. 返回大字符串錯誤
- 24. 在C++中將字符串大小限制爲字符數
- 25. IO錯誤:[錯誤22]讀/寫大字節字符串
- 26. C字符串文字「字符太大」
- 27. C#錯誤:不能將字符串[]'轉換爲'字符串'
- 28. C字符串到數組 - 字符串錯誤
- 29. C:大字符串輸入 - >分段錯誤
- 30. 使字符串變小c#
未定義的行爲。數組之後恰好有一個'0'。 – juanchopanza
std :: cout.write(a,sizeof(a)) –
反正你應該使用'std :: string' – Brian