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你已经知道了吗?