指针的问题 *p=&i 和 *p=i

为什么说 *p=&i 是指向i的地址 而又有 *p=i (对地址进行析值)
不都是*pi么?

你这个不是同一个代码吧?
*p = &i 说明p是一个二级指针,如果i是int,&i为int*,*p可以为int*时,p要求是int**。
*p = i说明p是一个指针,如果i是int,*p为int类型,p为int*类型。追问

能不能这么理解:*p=&i 意为p指向i地址的地址
但如果有写int*p=&i ,就可以看做是 *p=i 和 p=&i

追答

没有地址的地址的说法,地址是一个具体的数,不再有地址。p只能是指向一个变量,p的值是变量的地址。
例如:
int**p
int*pi;
int i;
pi = &i;
p = π

int *p = &i等价于int *p; p = &i;
不等价于*p = i

追问

所以在你给的例子中
*pi=i; (1)pi=&i;(2) *p=pi; (3)所以联立(2)(3) 有 *p=&i
是这样么?

追答

可以这样理解,但*p = &i这句只有pi存在时才有意义,因为*p实际是pi。

温馨提示:答案为网友推荐,仅供参考
相似回答