C++ 需要帮助理解指针练习的输出吗

C++ 需要帮助理解指针练习的输出吗,c++,C++,嗨,我正在学习一本书,有一个问题显示了以下代码: 以下代码的输出是什么 int main() { int x; int *p; int *q; p = new int[10]; q = p; *p = 4; for(int j = 0; j<10; j++) { x = *p; p++; *p = x+j; } for(int k= 0; k<10; k++) { cout << *q << " "; q++; } co

嗨,我正在学习一本书,有一个问题显示了以下代码:

以下代码的输出是什么

int main()
{
int x;
int *p;
int *q;
p = new int[10];
q = p;
*p = 4;
for(int j = 0; j<10; j++)
{
    x = *p;
    p++;
    *p = x+j;
}
for(int k= 0; k<10; k++)
{
    cout << *q << " ";
    q++;
}
cout << endl;
return 0;
}
intmain()
{
int x;
int*p;
int*q;
p=新整数[10];
q=p;
*p=4;

对于(int j=0;j
p++
增加指针,使其指向下一个元素。这称为指针算法。这不会影响值。为此,您需要使用
*
取消对指针的引用,如
*p=x+j

*p=x+j;
p
指向的值设置为
x+j
x
=指向上一个
p
(增量之前)的值,并且
j
从0变为9。因此它给出:

4+0(4)、4+1(5)、5+2(7)、7+3(10)

因为它将第一个元素初始化为4,并在第二个元素开始写入,所以在开始时有两个4

然而,我认为循环应该是

for(int j = 0; j<9; j++)
{
    x = *p;
    p++;
    *p = x+j;
}
for(int j=0;j