作业帮 > 综合 > 作业

自学C语言 书上有这样2句话感觉这两句话又点矛盾啊 那么*p=*a该怎么理解啊  是右边指针所指地址的值给左边

来源:学生作业帮 编辑:作业帮 分类:综合作业 时间:2024/05/14 04:22:32
自学C语言
书上有这样2句话


感觉这两句话又点矛盾啊 那么*p=*a该怎么理解啊  是右边指针所指地址的值给左边指针所指的地址吗?
C语言中的值和址该怎么理解啊  通常a=100  是a的值100吗? 那么scanf("%d",&a);又该怎么理解
首先,对你的自学表示尊敬!
其次,我大致说一下你这里涉及的一些问题.
你的书本或许描述不容易让读者理解,但我可以简单分析:
搞懂三个概念:地址,存储单元,存储单元的值.
一个微机系统,必备的一个部分就是存储器,它用于存储数据,存储器最小单元是一个字节,就像整数的间隔至少是1,而存储器存储数据也是要对号入座的,于是就给予存储器每个最小单元编号,不同微机系统,可能编号有所差距,但是,绝大多数是从0开始的.这个编号就是存储单元的地址.
存储器中由一个或多个字节共同组成,然后存储一堆数据,这个存储数据的几个物理器件就是存储单元.
对于一个指针变量,它存储的是编号,它所指向的就是存储单元,而存储单元存储的值就是存储单元的内容.
因此,你再仔细读读上边的话.
*p出现在左边.说的正是,这个时候是访问存储单元,不是访问值,因为你的操作会修改的是存储单元.
*p在右边,读取的是值,不是存储单元.
至于你的问题2,&a就是求a变量的存储地址编号,是个整数,如果按你说的方式输出,那自然无疑.
另外,介于更严谨的知识体系,我个人觉得,上述说法有不足之处,只是不是你的说的不理解的地方,比如*p出现在等号左边,在右边,其实看具体情况而定,这个可以更多讨论(QQ私信发送给你了).
如果满意这个回答:请采纳,并赞一个,谢谢.