直接输出字符数组名为什么输出的不是地址而是数组元素

如题所述

字符数组是可以用这种方式输出的,因为数组名即代表首地址,数组是一块连续的内存空间,所以能直接输出.如果是其他类型的数组则输出的是一个地址.
因为C和C++不进行数组的边界检查,数组在内存中存放的只是所有数组元素的值,而不存在一个地方可以表示数组的大小.所以cout函数没法知道该输出多少个元素。
字符串则不同,它有一个'\0'用来表示字符串结束,cout看到'\0'就知道输出结束了.
可能你想问,为什么别的类型不也弄个类似于'\0'的结束符呢.那我就反问你,你认为哪个值用来做结束符合适?字符串可以用'\0'来表示结束,是因为'\0'这个值就是专门用来表示字符串结束的,对于其他类型,比如整数,你能说用0或-1来专门表示数据结束么。
温馨提示:答案为网友推荐,仅供参考
第1个回答  2017-03-28
只有char*才会通过找\0显示全部元素的吧?其他的应该都显示地址吧……
相似回答