![](https://iknow-base.cdn.bcebos.com/lxb/notice.png)
一个关于c++指针的问题
#include<iostream>intmain(){usingnamespacestd;double*p3=newdouble[3];p3[0]=0.2;p3[1]=...
#include<iostream>
int main()
{
using namespace std;
double * p3 = new double [3];
p3[0] = 0.2;
p3[1] = 0.5;
p3[2] = 0.8;
cout << "p3[1] is " << p3[1] << ".\n";
p3 = p3 + 1;
cout << "Now p3[0] is " << p3[0] << " and ";
cout << "p3[1] is " << p3[1] << ".\n";
p3 = p3 - 1;
delete [] p3;
return 0;
}
p3+1过后,p[0] = 0.5我能理解,但是为什么p[1]也跟着指向后面一个元素变成0.8,难道p[1]不应该还是0.5么,如果p[1]跟着变得话,那p[2]指向哪个元素。
求助 展开
int main()
{
using namespace std;
double * p3 = new double [3];
p3[0] = 0.2;
p3[1] = 0.5;
p3[2] = 0.8;
cout << "p3[1] is " << p3[1] << ".\n";
p3 = p3 + 1;
cout << "Now p3[0] is " << p3[0] << " and ";
cout << "p3[1] is " << p3[1] << ".\n";
p3 = p3 - 1;
delete [] p3;
return 0;
}
p3+1过后,p[0] = 0.5我能理解,但是为什么p[1]也跟着指向后面一个元素变成0.8,难道p[1]不应该还是0.5么,如果p[1]跟着变得话,那p[2]指向哪个元素。
求助 展开
2个回答
展开全部
p3是指向24个字节一片内存,由于是double类型的,所以+1是一次移动8个字节,p3[1],p3[2],p3[0]是对p3的指向的内存地址进行解析而已;p3+1;移动8个字节,p[2]越界;
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询