C语言指针变量的理解

都说指针是C语言的灵魂,这只有正真理解掌握了C语言的大神才会有体悟吧,虽说我也学习过,但是感觉并没有学到它的灵魂之处,特别是指针这一方面,总是会出现当时理解了,但是过滤一段时间又会忘记,这次干脆写下来,方便以后忘记了有去查。

C语言指针是什么?

我们要知道计算机中的所有数据都必须放在内存中,不同类型的数据占用的字节数不一样;

例如 int 占用 4 个字节,char 占用 1 个字节。为了正确地访问这些数据,必须为每个字节都编上号码,就像门牌号、身份证号一样,每个字节的编号是唯一的,根据编号可以准确地找到某个字节。

我们将内存中字节的编号称为地址或指针,地址从0开始依次增加(内存中的地址编号是以十六进制表示的)

一切皆地址

这让我想到linux中是一切皆文件是类似的

C语言用变量来存储数据,用函数来定义一段可以重复使用的代码,它们最终都要放到内存中才能供 CPU 使用。
数据和代码都以二进制的形式存储在内存中,计算机无法从格式上区分某块内存到底存储的是数据还是代码。当程序被加载到内存后,操作系统会给不同的内存块指定不同的权限,拥有读取和执行权限的内存块就是代码,而拥有读取和写入权限(也可能只有读取权限)的内存块就是数据。(这就是一切皆文件)
CPU只能通过地址来去的内存中的代码和数据,程序在执行过程中会告知要执行的代码以及要读写的数据的地址,如果CPU读取到程序出错时,那么就会发生访问错误会被硬件和操作系统拦截,强制程序崩溃。

CPU 访问内存时需要的是地址&

  • 10
    点赞
  • 26
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Leng_tian

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值