关于指针指针的问题

sas*_*ash 4 c++

double a=4;
double *x=&a;
double **y=&x;
cout <<x<<endl<<(y+1)<<endl<<(y+1)[0]<<endl<<y[1];
Run Code Online (Sandbox Code Playgroud)

如果我运行上面的C++代码,输出将是:

0x28fef0

0x28fef0

0

0

我知道x的值是变量a的地址,y的值是变量x的地址.但是怎么来x = y + 1?y + 1,(y + 1)[0]和y [1]是什么意思?谢谢你的帮助!

NPE*_*NPE 9

怎么来x = y + 1?

意外地.你的编译器恰好布局xy内存这样一个紧随另一个.它没有义务这样做,所以你不能依赖这种行为.

请注意,解除引用y+1,例如通过(y+1)[0],y[1]或者*(y+1),还有未定义的行为.