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