下面的代码打印整个字符串.我很困惑为什么会这样做.
char test[] = "jeff";
cout<<test<<endl;
Run Code Online (Sandbox Code Playgroud)
输出是"Jeff",我期望它打印char数组"test"的值,因为test是指针,指针是'J'的第一个元素.
为什么我打印整个字符串,当我cout<<test?
因为operator<< (basic_ostream<charT,traits>& os, const char* s);(该列表中的#2"字符序列"(略多于技术列表).test衰减到一个指针,或者char*然后打印成一个C字符串.
这是完全相同的原因cout << "Jeff";(而不是打印地址"Jeff").
'j'当然,第一个要素是,但char*并不仅仅代表一个char,而是代表string它们中的一个.cout将继续读取char直到它找到空字符,或'\0'.当你使用字符串文字时,这是隐含的"jeff".
要仅打印第一个char,请取消引用指针以使其像cout<<*test<<endl;.
| 归档时间: |
|
| 查看次数: |
2263 次 |
| 最近记录: |