c语言学习笔记之指针

指针

  • 内存中最小的存储单元:字节,每个字节在内存中都有一个编号,这编号就是指针
  • 指针:内存地址
  • 有了指针你就有了打开这块内存的钥匙,就可以操作这一块的内容了
  • 指针变量:存放内存地址的变量
  • 定义指针:指针所指的数据类型 * 指针变量名称
  • 在定义变量的时候,*表示类型说明符,说明定义的这个变量指针变量
  • 使用场景:
    1. 在被调函数中,通过形参改变主调函数实参的值
    2. 用于函数返回多个值

多级指针(了解)

指向指针的指针

指针为什么要分数据类型

  1. 变量的地址是变量所占存储空间的首地址
  2. 指针变量仅仅可以存储一个地址编号,如果没有类型,当通过指针就不知道要访问多少个字节的存储空间
  3. 指针区分类型是为了通过 指针访问他所指向的存储空间,能够正确访问
  4. 如果通过一个char类型的指针操作一个int的变量,如果值的二进制数据超过1字节(char占一个字节,int占4个字节),那么就造成数据错误
  5. 如果通过一个int 类型的指针操作一个char变量,那么你就会修改了你不该修改的内存,造成程序逻辑错误

指针与一维数组:

数组像一个指针

  • nums[1] == p[1]
  • nums+1 = p + 1
  • nums[1]的本质*(nums + 1)
  • 指针 + 整数 ==== 指针的值 + sizeof(所指向的数据类型)*整数
  • 数组不是指针
    1. sizeof(array) != sizeof(pointer);当一个数组赋值给指针变量时候,那么数组中有些信息就丢失了,比如:数组的长度,这种现象指针信息遗失
    2. 指针的指向可以改变,数组的指向不能改变
    3. array == &array

指针与二维数组(理解)

  • 二维数组的名称为一维数组的地址指针
  • 定义指针数组格式
    • 数据类型 * 指针变量名称[指针个数]
  • *p == p[0]:没有人这么写
  • 定义指向一维数组的指针
    • int (*ps)[3]
  • int nums[3][2]和int (*ps)[2]

    • ps == nums
  • nums 和 nums[0]

    • 相同点:对应的地址是一样的
    • 不同点:指针类型不同
    • nums + 1 = nums + sizeof(nums[0]
    • nums[0] + 1 = nums + sizeof(int)
    • sizeof(nums):二维数组所占用的存储空间字节数
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值