C语言指针,&*怎么得到地址的?

&*yptr -> &(*yprt) -> &(y) -> 得到y的地址,yptr -> yptr

这个&(*yprt) -> &(y)是怎么变的?为什么不是&yprt???

*yprt是指针,yprt是计算机存储某个数据的地址,加上*表示指向这个地址存储的数据
若地址yprt里存储的是y,&*是单目运算符,符合右结合法则,所以先是运算*yprt,它的值是y,
然后再&y,它的运算结果是得出存储y的地址,就是yprt。
不懂继续问
望采纳追问

还是不懂啊,为什么*yptr会变成y???为什么存储y的地址是yptr???

追答

这是你自己定义的啊,比如说声明指针变量的时候
int *yptr,表示指向int型数据的指针,这就表示向计算机申请了一块用来存储整形数据的空间,而这块空间的地址名就是yptr
又如果你赋值了:*yptr=y,那么这块地址里存储的就是y这个数据,*只是表示读取这块地址里存储的数据
而&要用在某个数据前,用于表示读取存储这个数据的地址,所以&y就是yptr

温馨提示:答案为网友推荐,仅供参考
第1个回答  2014-07-19
比如说a这个变量吧,他存了一个数字,在地址2000中
那么局势int p=&a
&a就是取a的地址,即&a就是2000了。
那么*p就是指指向p这个地址的内存空间,也就是a了
第2个回答  2021-01-28
你没看懂问题。人家问本意,cpu内部如何用&找到地址
第3个回答  2014-07-19
你给出的代码太乱了,看不明白。
相似回答