需要帮助理解指针练习的输出
Need help understanding output of a pointer exercise
嗨,我正在研究一本书,有一个问题显示了以下代码:
以下代码的输出是什么?
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;
}
我知道输出是:
4 4 5 7 10 14 19 25 32 40
但我不明白为什么,我知道p=q,因为10数组中的第一个p等于4,所以q也是,但在那之后,它不应该每次增加一个吗?
p++
递增指针,使其指向下一个元素。这就是所谓的指针算术。这不会影响值。为此,您需要像在*p = x+j
中那样使用*
取消引用指针
CCD_ 4将CCD_ 5所指向的值设置为CCD_。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;
}
否则将存在对CCD_ 10的越界访问。
相关文章:
- 递归函数计算序列中的平方和(并输出过程)
- 如何使用 < 和 > 命令获取 c++ 中的输入和输出?
- 加速C++练习2.4
- 请解释"函数1(p1,p2,p3);"的输出
- C++:将控制台输出存储在宏中更好吗
- 创建一个函数以在输入为负数或零时输出字符串.第一次执行用户定义的函数
- 如何在OMNET++中指定与命令行参数组合的输出文件名
- 为什么我的代码在输出中增加了93天
- 如何从void函数输出字符串
- 输入到文件并输出到另一个文件,并将流文件传递给函数
- AES加密到解密未正确输出
- 如何将c++程序的一些输出传递给shell,以便在shell中使用
- 使用C++程序合并排序没有得到正确的输出
- 为什么我不能在不创建字符串变量的情况下使用函数的字符串输出
- C++格式化输出问题
- 将值从二维数组输出到文本文件
- 集合上的输出迭代器:assign和increment迭代器
- 贝金纳C++练习解决方案的意外输出
- C++初级读本第五版字符串练习,要求两段不同的代码提供相同的输出
- 需要帮助理解指针练习的输出