先看到下面的代码
double val;
double *pd = &val;
double *pd2 = pd;
以前看到第三句的时候以为它和double **pd2 = &pd 是等价的,都是指向指针的指针,今天才发现不是,第三句其实和第二句是等价的,指针pd指向的是变量val,所以其本身存储的值就是val的地址,所以用pd去初始化指针pd2,就是用val的地址去初始化pd2,所以pd2指向的也是val,而pd2本身的值,也是val的地址:
而 double **pd2 = &pd 呢,pd2才是真正指向指针的指针,用&提取了pd本身的地址去初始化pd2,所以pd2本身存储的值是pd的地址,*pd2的值就是pd所存储的地址,即val的地址, **pd2 就是val的值,还有指向指针的指针的指针,都是一样的原理:

1010

被折叠的 条评论
为什么被折叠?



