不理解指针增量答案

Pointer increment answer not understood

本文关键字:答案 指针 不理解      更新时间:2023-10-16

我一直在尝试这样的代码

#include <iostream>
using namespace std;
int main() 
{
    int t=1;
    cout<<t<<" ";
    int *b = new int(t);
    cout<<*b++<<" ";
    cout <<*b<<" ";
    cout<<t<<" ";
    return 0;
}

它给我的输出是1 1 0 1。我不能理解输出中的0。请解释一下为什么会这样?

在本例中,++的优先级高于*。因此,您正在增加指针b本身,而不是指向的内存(这可能是您的意图)。

获得你想要的行为:

cout<<(*b)++<<" ";

cout << *b++ << " ";

b指向超出分配的内存。

下一行

cout << *b << " ";

解除内存引用超出有效限制。因此,它是未定义行为的原因。