这是我的简单练习:
int a = 10;
int b = 5;
int *p = &a;
int **p2 = &p;
int *p3 = &b;
*p = **p2 + *p3;
*p3 = (**p2)--;
*p2 = p3;
**p2 = **p2 + 15;
答案中说a
的值为14,b
的值为30,怎么可能呢?我非常纠结于指针 **p2
,我需要一些关于这个指针的解释。
int a = 10;
int b = 5;
int *p = &a;
int **p2 = &p;
int *p3 = &b;
a
为10,b
为5,p
指向a
,p2
指向 p
,p3
指向 b
。
*p = **p2 + *p3;
a
的值(p
指向 a
)设置为 **p2
(什么是由 p
指向:a
) 加上 *p3
(指向 b):15
*p3 = (**p2)--;
b
的值(p3
指向 b
)设置为 **p2
(什么是p
指向: a
): 15. 然后 a
递减: 14.
此时,a
为14,b
为15。
*p2 = p3;
p2
指向的 (p
) 被设置为 p3
。 *p2
现在将指向 p3
指向的内容:b
**p2 = **p2 + 15;
b
的值设置为自身加上 15: 30
我是一名优秀的程序员,十分优秀!