如何输出const char类型?为何不能用cout<<*pDept替代cout<<pDept?
问题解答
先看代码里的核心定义:
const char* pDept = "electronics";
这里的pDept是一个指向字符的指针,它存储的是字符串"electronics"首字符'e'的内存地址。
- 当你写
cout << pDept时,C++标准库对std::ostream(也就是cout)有专门的重载逻辑:遇到char*类型的输入时,会自动从指针指向的地址开始,逐个输出字符,直到碰到字符串结束符'\0',所以最终会输出完整的electronics。 - 而
*pDept是对指针的解引用操作,它取的是指针指向的内存地址里存储的单个字符——也就是字符串的第一个字符'e'。所以cout << *pDept只会输出一个e,完全达不到原来输出整个部门名称的效果。
直白点说:pDept是整个字符串的"入口地址",cout会顺着这个地址读完所有字符;*pDept只是入口处的第一个字符,只能输出这单个字符。
内容的提问来源于stack exchange,提问作者coreacoding
相关产品推荐
相关产品推荐

