我是c++的新手,最近花了几天时间研究指针。我发现下面两段代码看起来完全相同,但结果却不同。
第一段代码:
int a = 5;
int* ptr = &a;
cout << ptr;
cout << "\n" << ++ptr;
第二段代码:
int a = 5;
int* ptr = &a;
cout << ptr << "\n" << ++ptr;
以下是第一个的输出:
0043F940
0043F944
以下是第二个的输出:
003AFE20
003AFE20
对我来说,第一个输出似乎更合理,因为它首先输出了a
的地址,然后是下一个整数位置的地址。但在第二个输出中,ptr
显然始终指向a
。
有人能解释一下这种差异吗?
非常感谢。
++ptr
首先被评估,然后再次评估ptr
,具有相同的值。它们可能不指向a
,而是指向下一个位置。您可以使用cout <<&a
来验证这一点。 - Mirko