为什么我的字符数组输出很奇怪?#
数组很容易隐式类型转换为首元素的指针, 字符数组 char array[size]
即转换为 char*
或 char const*
.
cout << char_array
就发生了这样的转换才找到能用的函数, 而由于 约定俗成, 它会被认为是字符串进行输出.
字符串以 '\0' 作为终止字符, 所以 cout
只能一直输出到 '\0'
为止. 如果你的字符数组没有打算在末尾加上 '\0'
, 就不应该采用这样的输出方式, 而应该自己编写输出函数.
参见
请阅读 C 风格数组: T array[size] (C-style array) 理解 C 风格数组的传参方式.
请阅读 C 风格字符串和字符串字面值 (C-style string and string literal) 理解 C 风格字符串和字符串字面值.
请阅读 为什么字符指针不输出地址值, 而其他指针输出地址值? 理解
cout << string
具体是怎么输出的.