4-26 指针

  • 指针
    让程序更简洁高效,提供了间接访问变量的方式
    • 基本概念
      • 地址
        用来区分不同内存字节空间的编号
      • 指针
        指针就是地址,地址就是指针,地址是编号,指针比地址多了指向的概念
      • 指针变量
        一个用来存放指针(地址)的变量,使用变量即使用指针
    • 指针相关运算符
      • &
        获得变量在内存空间中的首地址
        • 注意事项
          • 只能对变量操作
          • 连接表达式的结果为该变量在内存空间中的首地址
          • 会让类型升级
      • *
        获得指针所指向内存地址中的值
        • 用于左值时:将右值放入指针所指向的空间
        • 用于右值时:直接取指针对应空间的值
        • 注意事项
          • 只能对指针进行*操作
          • *会让类型降级
          • *和&互逆
    • 指针变量
      指针均占8字节(64位系统中)
      注意不要使用未经初始化的指针
      • 野指针
        未经初始化的指针或已被释放空间的指针
    • 指针初始化
      • int *p =NULL
        NULL:指向内存地址为0x0的指针
    • 指针的运算
      • +, -, ++, --
        ++:向内存高地址偏移指向数据类型大小个字节空间
        --:向内存低地址偏移指向数据类型大小个字节空间
    • 常见操作
      • p = &b;
      • *p = b;
      • p = q;
      • *P = *q
    • 指针作为函数参数
      • 地址传递
        实参将地址传递给形参,形参是实参的指针,通过对形参取*改变实参的值
        函数体内部想修改函数体外部的值时使用地址传递
    • 指针与数组
      • 数组的数组名是指向数组第一个元素的指针常量
        a == &a[0]​
      • 访问下标为n的元素
        指针[偏移量] == *(指针+偏移量)a[n] == *(a+n) == *(p+n) == p[n]
    • 数组作为函数参数
      int fun(int *parray, int len)
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值