C++ 指针,指针对指针,exc

C++ 指针,指针对指针,exc,c++,pointers,C++,Pointers,我们需要了解下一个大学守则。一切都很顺利,直到收到指示: (*((*q1)+2))++; 有人能告诉我这个指示有什么效果吗?q1或p1没有改变。以下是整个练习 double a = 2; double b[] = {1,3,5}; double c[] = {4,6,8,10}; double & d = a; double* p1 = b; double* p2 = &c[1]; double **q1 = &p2; double **q2 = &am

我们需要了解下一个大学守则。一切都很顺利,直到收到指示:

(*((*q1)+2))++;
有人能告诉我这个指示有什么效果吗?q1或p1没有改变。以下是整个练习

 double a = 2;
 double b[] = {1,3,5};
 double c[] = {4,6,8,10};
 double & d = a;
 double* p1 = b;
 double* p2 = &c[1];
 double **q1 = &p2;
 double **q2 = &p1;
 (*q1)++;
 a = **q1-*(p1+1);
 q1 = q2;
 (*((*q1)+2))++;
 p2-=2;
 **q1 = *p2;
 *q2 = &c[1];
 b[2] -= *(p2+3)-**q1;
 d = c[1];
 cout << a << endl << b[0] << endl << b[1] << endl << b[2] << endl;
考虑到q1是一个双重**:


从内到外工作

**q1+2++

*q1是p2,所以替换

(*(p2 + 2))++;
p2+2是c[3]的地址,因此替换

(*(&c[3])++;
10++ is 11
*&c[3]是10,所以替换

(*(&c[3])++;
10++ is 11

**q1+2++;相当于*p1+2++

**q1+2++是q1[0][2]++。只需从内部和外部对其进行求值,就像它将执行一样。@Steven你已经知道了吗?