C语言中,p=&a 那么*p与a的区别是什么?

2024-11-25 05:40:35
推荐回答(2个)
回答1:

a和p是变量,&a和*p是表达式,1和0x1000是常量
a和*p表示的都是整形左值,p和&a表示的都是指针型左值,1和0x1000表示整形和指针型右值。(左右值的概念不清的话,google一下)
在内存中,a和p有存储空间空间,a存放着1,p存放着0x1000,*p和&a没有空间,他们的运算结果是在寄存器中存放的,1和0x1000也有空间,在程序的常量段存放。
*p按照Stanley Lippman的著作《C++ Primer》中的描述,p是指针变量,*是解引用操作符,*p是一个表达式,含义是“对指针变量p进行解引用操作”,这与表达式&a的含义“取整形变量a的地址”是正好是相反的操作。

回答2:

首先 a和p都是变量 1000是常量,这里只有a和p分配了内存,但是1000和1没有

p 是指p的值,也就是1000
&a 是指a的内存地址
*P 是指p的内存地址
a 是指a的值也就是1
1 是a的值,放在分配给a的地址里
1000 是p的值,放在分配给p的地址里

形象点说 ,a和p是房子
1和1000是住户,1 住在a里 1000住在p里
p 是指p的住户
&a 是指a的门牌
*p 是指p的门牌
a 是指a的住户
1和1000 是住户

书的话,谭浩强的 c语言程序设计第3版 里面有详细的说明帖子就不晓得咧·······