*p是一个变量,是一个变量。
p是一个地址一个内存地址,不是一个变量。
int *p; printf("%p",p);
会打印出一个16位地址
&p中&是求地址符,例如&a是求a的地址,&b是b的地址
在同一代码中,*p和&p的关系?
上面说过执行int *p
之后,p是一个地址但也是一个变量。
&p是一个地址,顺着这个地址能找到一个值,这个值是p,然后p也是一个地址,顺着这个地址能找到另外一个值p
而p不再是一个地址,是一个变量就跟int a=1,b=2;
里一样。
通俗一点解释找一本《C语言程序设计》的书,图书馆有一本《索引大全》的书,里面记录着馆内所有书的位置
通过《索引大全》
——《C语言程序设计》的位置
——《C语言程序设计》
上面三个东西分别是&p,p,&*p
网友评论