std::cout是std::ostream类的实例。std::ostream的流操作符operator<<有多个重载版本,可以在编译期根据参数类型的不同选择不同的操作。对于这里的ic,类型是char*(字符指针),重载的operator<<把它当作一个字符串的起始字符的指针,输出一个字符串。对于其它的非字符指针类型则输出它本身的值。顺便,字符串字面量" "的类型是char[3],这里隐式转换为char*类型的指针被输出。
如果要输出字符指针的值,可以先转换为其它指针类型或整数,例如cout << static_cast
====
[原创回答团]
这与cout的功能有关系,ii是整数数组首地址,ic是字符数组首地址,而对于cout函数来说,如果你直接让其输出一个字符指针,它默认是输出该指针指向的字符串,以上的cout语句相当于printf("%d %s",ii,ic); 你要想两个都输出地址可以用
printf("%d %d",ii,ic);
或
cout<
这个很难解答的。我翻过很多书和资料都没找到答案。
估计这是从祖上遗留下的问题。就当它就该是这样吧。
cout<<已重载,遇到字符串地址即输出字符串。