高质量C语言编程-指针的使用

指针也是变量,是一种特殊形式的变量。它用来存放其它变量的地址 (且只能存放地址)

 

特殊在哪儿?

p它的‘值是别人的地址;

p它的类型用来指导其行为,而非指导开辟自身空间;

p可以定义为 void 类型;

p它提供了间接访问目标变量的一种手段。

 

指针是C语言提供给编程者通过变量操纵硬件地址的一种方法,这实际表现了指针访问目标时不受作用域约束的 “特权”。

 

指针本身占了多大的内存?

你只要用sizeof(指针的类型)测一下就知道了。在32位平台上,指针本身占据了4个字节的长度。

由于指针总是和内存打交道, “指针本身占据的内存”和“指针指向的内存”二者都有内存,请注意二者的区别。

  char ch = ‘A’;

  char*cptr = &ch;

  ch占有一块内存,

  cptr也占有自己的内存,

它们是两块不同的内存。

sizeof(cptr)4字节;

sizeof(*cptr)1字节。

 

经常见到这样的描述:

 “一维数组是一级指针”、“二维数组是二级指针”、

 “数组名可以作为指针使用”、“数组名就是的常指针”、

 “数组名就是的指针常量”、“指针就是地址”......

 

不过非常遗憾,这些说法都是错误的!

错就错在将“名称”和“内容”混为一谈。当 int  a = 9;时,

a是“名称”,9是“内容”。

指针是一种容纳地址的变量,通常叫指针变量,简称指针,是名称。

而地址,是内存单元的编号,它是一个常值,是指针中的内容。

指针绝不等同于地址,一个是装地址的变量,一个是地址常量,千万不要把二者意义混淆。

数组名是个常地址,不可称为指针。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值