C++:指针输出让我感到困惑
C++: Pointers outputs confusing me
所以我有以下代码:
cout << _userLoginName << endl;
cout << *_userLoginName << endl;
cout << (_userLoginName+1) << endl;
cout << *(_userLoginName+1) << endl;
变量 char * _userLoginName
已设置为 等于 "smith"
。我的问题很简单:为什么在代码的最后一行中我得到以下输出?
smith // as from cout << _userLoginName << endl;
s // as from cout << *_userLoginName << endl;
mith // cout << (_userLoginName+1) << endl;
m // cout << *(_userLoginName+1) << endl;
我确实尝试过推理结果,但我无法弄清楚。谢谢。
如果你给 cout
1 一个char *
,它将尝试打印一个字符串。 如果你给它一个char
,那么它将打印那个字符。
_userLoginName
和(_userLoginName+1)
属于char *
型; *_userLoginName
和*(_userLoginName+1)
属于 char
型。
1.从技术上讲,"给std::operator<<(std::ostream &, T)
"。
拿出一张纸,画一个盒子,里面有六个单元格,上面写着"smith":
+-+-+-+-+-+--+
|s|m|i|t|h| |
+-+-+-+-+-+--+
^ ^
| +- _userLoginName + 1
+- _userLoginName
使用笔作为指针"_userLoginName"并将其指向第一个单元格。取消对指针的引用(即对指针ptr
使用 *ptr
(意味着查看它指向的单元格的内容。也就是说,"*_userLoginName"显示在单元格的内容中。编写 char*
或 char const*
类型的指针会做一些有趣的事情:它跟随指针并写入它找到的每个单元格的内容,直到它到达值为