C语言指针详解

什么是指针

  1. 指针就是一个变量,用来存放地址,地址唯一,标识一块内存空间。
  2. 指针的大小是固定的,32位平台是4个字节,64位平台是8个字节。
  3. 指针有类型。指针的类型决定了指针+ - 整数的步长和指针解引用操作的权限  

  •  * 运算符叫间接操作符,也称为解引用操作符用来找出存储在地址中的值。*运算符后面跟着一个指针名或者地址时,*给出存储在指针所指向地址的值

打印的结果是*p与字符变量ch内的字符是相同的,ch的地址和指针p也是相同的,说明了ch的地址成功的赋值给了指针p,再继续将p内的字符改为B并且重新打印ch和*p,其中变量ch也变成了B字符说明将ch的地址赋值给p,我们可以对p进行操作从而来修改 变量ch。

  • 指针的大小和步长

数组名是指针常量,在定义后,只要程序运行起来,系统就会为它分配一个连续的存储单元,每一个存储单元都是有确定的地址,而数组名就对应着那个连续的存储单元的首地址,这个是定值,也就是常量。指针的内容都是地址,即数组名是指针常量。

 指针的步长和指针的大小这个问题很容易混淆,懂了之后就很容易。

首先创建了一个字符数组ch和整型数组arr,在分别将二者的地址给指针p和ptr,先打印出二者的地址。p+1,ptr+1后在对地址进行打印,发现指针p进行p+1操作后地址加了1但ptr进行ptr+1操作后地址加了4,这说明不同类型的指针的+1后地址偏移的字节数不同。但是p指针和ptr指针的大小是相同的,在32位平台下是4个字节。

不同类型的指针的步长可能不同

VScode中步长即为该类型的大小;

指针的大小:

 地址打印出来后是010FFC03 这个每一位都是16进制,每两位为一个字节,一共有8位,即在32位平台下 地址都是八位16进制数,即指针的大小都是4个字节。

 

 

 

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值