C语言梳理指针的混淆点

比喻图
指针类型

1. 内存单元地址?
 所谓的内存单元地址就是系统为它们分配特定的内存空间,这些内存是以字节为单位的一片连续的存储空间,好比上图中的编号就是我们所谓的内存单元地址。

2. 变量的地址和变量的值?
 变量的地址是指西配分配给你变量的内存空间的首字节地址。相当于图中的编号的1000、1002、2000、3000和3003。
 变量的值,相当于房主,例如2000到2003代表的是小绿。

3. 系统具体分配空间
 我们知道变量的三个要素是:类型、变量名和值。程序中定义的变量,系统编译的时候都会给他们分配相应的存储空间,比如小绿,系统就给它分配了地址2000、2001、2002和2003,那么小绿在内存中的地址就是2000。然后通过小绿(变量名)将对应的内存单元关联起来,以后再访问小绿(变量名)的时候,编译系统就能完成小绿(变量名)到2000-2004(内存单元地址)的转换。

4. 直接寻址和间接寻址
<1>直接寻址
 直接寻址比较简单,就是利用变量名进行存取,因为编译系统能够完成变量名到变量地址的转换。
<2>间接寻址
 所谓的间接寻址就是通过一个存着目标地址的变量达到间接访问的效果的。比如上面的表中,变量a中存着值2000,我们通过寻找地址2000就能找到小绿。

5. 指针和指针变量
 C语言中,有一种特殊的变量,就是我们表中的变量类型,它们的值是用来存放地址的。我们称之为指针变量。
 指针的本质就是地址。但是我们平时说的指针一般都是指针变量的简称,是用来存放地址的变量。例如表中的a、b、c我们都称之为指针,但其严谨的说法应该称之为指针变量。
6. 声明指针
 指针也有分类型的,int类型的指针不能用来存储double、float或char等等别的类型的地址。所以在声明的时候,和声明变量一样,前面要带上类型。
 带上类型后,声明指针的格式就和声明变量的格式不就一样了吗?那么如何才能区分两者的不同呢?所以为了解决这个问题,在声明指针类型的时候,前面必须加上*号来区别是指针变量还是普通变量。
注意:声明指针变量时,变量名前的*号仅仅是起到标志的作用,表示该变量的类型为指针变量。*号不属于变量名的一部分,例如 int * a,变量名为a。和普通变量一样,指针变量也遵循着先赋值再使用的规律。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值