用指针预测输出
Predict the output with pointers
在下面的代码中,我对3行的工作感到困惑。如果有人解释,我将不胜感激。非常感谢。
#include< iostream >
using namespace std;
int main()
{
1. char s[]="abcdef";
2. char *p=s;
3. *p++=*++p;
4. cout<<s;
5. return 0;
}
在行*p++=*++p;
之前,p
指向数组s
的开头。
线右侧的++p
将使p
增加一,因此它现在指向b
。用*
对其进行去引用将给出值b
,因此右手边的求值为b
。
在左手边,由于使用了后增量运算符,p
的值不会立即改变。因此,来自RHS的值b
将被设置到相同的存储器位置。由于后增量运算符,p
将指向数组的字符c
。
因此,在这一行之后,字符阵列将保持不变,因此将打印abcdef
。然而CCD_ 15将指向数组的字符CCD_。
请注意,以上内容仅在c++17之后有效。从en.cppreference.com/w/cpp/language/eval_order:在每个简单赋值表达式E1=E2和每个复合赋值表达式E1@=E2中,E2的每个值计算和副作用都在E1的每个值运算和副作用之前排序
相关文章:
- 用指针预测输出
- 当使用通配符和null指针调用函数时,对输出的说明
- 以下与指针相关的代码的输出是什么?
- 用于输出矩阵的二维指针
- 为什么数组到指针的输出不相关
- 重载 ostream << 运算符,指针作为参数,导致输出上的内存地址
- 指针和类,输出
- 空指针(为缺少的输出数组调用的 create() 在 create,文件 /home/m/OpenCV/modules/
- 如何调试输出指向成员的指针
- 当(错误)将指针指向指针时,我将如何收到以下输出
- 如何传递unique_ptr<T>代替原始*输出*指针参数?
- 为什么 c_str() 在返回常量指针值时不输出地址
- C++指针输出一致性
- x86 上的指针大小和奇怪的字符输出
- 从未初始化的 C++ 指针仍输出为已初始化
- 多重输出指针到C 中的文件
- 如何在 c++ 中输出指针对象的属性(具有 2 个或更多属性)
- 输出指针上的const前缀
- 控制台在输出指针数组和C++迭代时崩溃
- 打印字符串流输出指针