C语言指针

本文介绍了C语言指针的本质,指出指针是一个存储内存地址的变量。内容包括指针的本质、字符串常量的处理方式、指针的使用方法,如定义、关联和解引用,并详细解释了星号 * 和取地址符 & 的用法,以及指针定义时初始化和后续赋值的区别,同时还涉及左值和右值的概念。
摘要由CSDN通过智能技术生成

指针

指针的本质

首变量的值存储于计算机的内存中,每个变量都占据着一个特定的位置。每个内存位置都由地址唯一确定并引用,就像是一条街道上的房子由他们的门牌号码标识一样。指针只是地址的另一个名字罢了。指针变量就是一个其值为另外一个内存地址的变量。
首先必须要非常明确的是:指针的实质就是个变量,它跟普通变量没有任何区别。指针完整的名字应该叫做指针变量,简称为指针。
指针的出现是为了实现间接访问,在汇编中都有间接访问,其实就是CPU寻址方式中的间接寻址。间接访问(CPU的间接访问)是CPU设计时决定的,这个决定了汇编语言必须能够实现间接寻址,又决定了汇编之上的C语言也必须实现间接寻址。
间接寻址:意思就是不是通过一个立即数直接找到具体的数据,而是这个数据的地址被放在了一个寄存器中,我们先访问寄存器得到数据的地址,然后在通过得到的地址去访问所需要的数据。这里的寄存器在C语言中表现为指针变量,寄存器中的地址在C语言中表现为目标数据的地址,然后通过解引用指针变量中的地址来访问目标数据。原来C语言实现指针的机制后面是有硬件作为基础的,这才是本质。这也是我第一次注意到这个问题,虽然之前也学习过了但是并没有在CPU设计层次上来理解C语言。
高级语言中C#,JAVA等没有指针,也可以实现,原因是语言本身帮我们封装了。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

源代码大师

赏点狗粮吧

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

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

打赏作者

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

抵扣说明:

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

余额充值