C语言 指针与内存之间的关系

一、内存与字节

一个内存单元==一个字节==一个地址
整型 int 类型中int类型的字节数是4 且一个字节表示八个bite位 一个二进制数位有着32个bite
所以又可以表示为:一个字节 == 8个比特位 == 32位数的二进制数位的八分之一 

例如: int  a = 10;

该表达式表达的意思:向内存申请4个字节,用于存放数字10 

—— 就是把10的32位二进制数位分为了四份,一份八位比特位 

而四份,有不同的地址,而我们将地址位最低的哪一个地址,作为首地址使用。

而 & 作为取地址符号的时候 &a 就表示取a在内存中存放的地址 中的首地址  ,这和数组中的数组名一个意思,首地址可以代表a在内存中的所处空间位置。

二、内存与指针

int * p = & a

首先,我们想要把 &a存放到一个变量p中,而p也因此被称之位指针变量

而p的类型 则是 int *

而 * 则是说明 p是一个指针变量   ——   一个证明

int 表示的是 p 所指向的地址 &a 中 a 的一个类型  

int * 又表示了 指针变量 p的类型

*p表示的是一种指向,通过p中存放的地址,找到地址指向的空间 *p就是变量a

p是存储指向内容的地址,是一个地址编号

如图所示,指针变量 p 中存放的其实是&a 也就是一个地址的编号,而这个地址编号又引导着指针变量p指向这个地址编号所表示的空间

就是相当于 指针变量p(*p)就是 变量a 

所以当指针变量p(*p)发生改变时,变量a也会随之而改变

例如 : *p = 0  相当于  a = 0;

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值