《C语言内核深度解析》书摘P37-P41:指针part.1

3.2指针到底是什么

  • 普通变量
    当不涉及强制转换的时候,某种类型的数据必须存放到对应的变量中。
  • 指针变量
    当不涉及指针强制转换的时候,某个类型地址必须放到对应类型的指针变量中。

指针变量和普通变量一样,都是用于存放数据的。
只是指针变量存放的数据很特殊,是内存地址
- 举例

int a = 10;
int *p = &a;/*针变量p里面存放的地址指向空间a*/

p中只存放了a首字节地址,但是int说明了*p希望访问的空间有4个字节

  • 变量空间的首字节地址,作为整个空间的地址

指针变量的类型作用

普通变量:

  • 程序员写代码时识别用
  • 空间大小的说明
  • 存储结构说明

指针变量:

  • 某类型一级指针变量 = 该类型一级地址
  • 某类型二级指针变量 = &(某类型一级指针变量)

所有普通变量的地址都是一级地址
所有一级指针变量的地址都是二级地址
过高级数的指针变量没有太大意义

指针使用之三部曲

  • 定义(声明)
int *p = null;  //初始化一下,防止野指针
  • 关联
int a = 10;
p = &a; //a空间的首地址给了p,所以p里面的地址常量指向了a空间
  • 引用
    读空间:读值操作,前提是里面存有数据才行。
int b = *p; //等价于b = a

写空间:向空间写入新的值

*P = 30;    //等价于a = 30

理解指针符号

星号*的理解

  • 用在指针定义的时候,与前面的类型结合,用于表示被定义指针变量的类型
int *p;
int* p;

星号靠前靠后都没关系
这时的*和p是两个不同的东西
*的个数表示指针变量的级数

  • 解引用
int *p = &a;
*p = 10;    //等价于a = 10

解引用时,*p表示p所指向的空间
这时的*p是一个整体
用于读空间和写空间。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值