10.指针

3.const关键字可以用来声明不可赋值的变量
   const变量只能在初始化的时候使用赋值操作符
4.volatile关键字用来声明多变的变量
   
指针变量是一种变量,它专门用来记录地址数据
地址数据的使用方法和普通数据的使用方法完全不同
只要把一个存储区的地址记录在一个指针变量中就
    可以通过这个指针变量找到这个存储区
我们可以把通过指针变量找到的存储区叫做指针变量
    的捆绑存储区
把捆绑存储区的地址记录在指针变量中就可以实现它们
    之间的捆绑,只有捆绑过的指针变量才能用来
找到捆绑存储区。
可以把指针变量存储区和捆绑存储区之间的关系看成
    类似于种子文件和普通文件之间的关系
指针存储区永远只能记录一个捆绑存储区的地址
指针存储区在不同的时候可以和不同的存储区捆绑
指针也有类型,不同类型的指针适合和不同类型的
    存储区捆绑


指针变量可以用来在程序中代表四个不同的内容
1.指针变量前不加*可以表示指针本身的存储区或这个
    存储区里面的地址数据
2.在指针变量前加*可以表示捆绑存储区或捆绑存储区
    里的普通数据


NULL表示一个固定地址,叫做空地址,它的数值就是
    数字0
没有捆绑过的指针再分成两类,一类记录的是空地址,
    它们叫做空指针,另外一类记录随即数据叫做
野指针
为了保证区分指针是否捆绑过必须在程序中禁止出现
    野指针


没有初始化的指针是野指针,所有指针必须初始化
如果指针所捆绑的存储区生命周期到了则指针也会
    成为野指针


*****指针初始化的时候*没有参与赋值过程,被修改
    的是指针本身的存储区


可以在一条语句中声明多个同类型的指针变量,但是
     必须在每个指针变量名称前加*


不同类型的指针大小一样,在我们的计算机上都是4个字节
不同类型的指针之间可以互相赋值,赋值结果的地址数据
    不会受影响


捆绑存储区的类型通常无法知道,只能根据指针的类型
    来判断。


不同类型指针之间可以进行强制类型转换,而且转换
    完成后地址数据不受影响


无类型指针用void*表示
这种指针可以和任何类型的存储区捆绑
无类型指针不能直接用来表示捆绑存储区
必须首先把无类型指针强制类型转换成有类型指针,然后
    才能表示捆绑存储区
如果地址数据来源很多并且类型不同就应该使用无类型
    指针记录它
使用无类型指针的时候必须能通过其他渠道获得捆绑
    存储区的类型


地址数据可以参与如下计算过程
地址 + 整数   地址 - 整数   地址 - 地址
地址加减整数n实际上加减的是n个捆绑存储区的总
    字节个数
地址减地址的结果是一个整数,它代表两个地址之间
    包含捆绑存储区的个数


记录数组中第一个存储区地址的指针可以表示数组中
    任何一个存储区
一旦指针和数组捆绑好以后在很多时候它可以代表这个
    数组


指针和数组名称的区别
1.指针可以被赋值,数组名称不可以被赋值
2.对数组名称进行sizeof计算得到数组中字节个数,
    对指针做sizeof计算得到指针本身存储区的
字节个数
3.一维数组名称取地址后的结果和一维数组名称本身
    所代表的地址数据一样,它们只是类型不同
    对指针本身取地址的结果和指针内部记录的地址
数据完全无关


可以把指针变量作为循环变量依次处理数组中每个
    存储区


声明指针变量时const关键字的使用方法
1.把const关键字写在数据类型前,例如
    const int *p_num = NULL;
    这种使用方法表示捆绑存储区不可以被赋值
指针本身的存储区可以被赋值
2.把const关键字写在指针变量名称前,例如
    int * const p_num = #
这种指针本身的存储区不可以被赋值
可以通过指针对捆绑存储区进行赋值


预习:
    1.指针作为函数的形式参数和返回值
2.字符串


作业:
    1.编写程序把一个数组中所有存储区的内容
   前后颠倒
(要求使用指针实现)













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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值