C语言指针

本文详细介绍了C语言中的指针,包括内存和地址的概念、指针的类型和值、间接访问操作符、未初始化和非法指针的问题以及如何避免野指针。重点讲解了NULL指针的含义和作用,以及指针、间接访问与左值的关系,同时还讨论了指针常量、指针的指针和各种复杂的指针表达式的用法。
摘要由CSDN通过智能技术生成

内存和地址

指针的实质就是个变量,它跟普通变量没有任何区别。
指针的出现是为了实现间接访问,在汇编中都有间接访问,其实就是 CPU 寻址方式中的间接寻址。间接访问(CPU 的间接访问)是 CPU 设计时决定的,这个决定了汇编语言必须能够实现间接寻址,又决定了汇编之上的 C 语言也必须实现间接寻址。
间接寻址:意思就是不是通过一个立即数直接找到具体的数据,而是这个数据的地址被放在了一个寄存器中,我们先访问寄存器得到数据的地址,然后再通过得到的地址去访问所需要的数据。这里的寄存器在 C 语言中表现为指针变量,寄存器中的地址在 C 语言中表现为目标数据的地址,然后通过解引用指针变量中的地址来访问目标数据。原来 C 语言实现指针的机制后面是有硬件作为基础的,这才是本质。

值和类型

不能简单地通过检查一个值地位来判断一个数值的类型。为了判断这个值的类型(以及它的值),必须观察程序中使用这个值的方式。

指针变量的内容

变量的值就是分配给这个变量的内存位置所存储的数值,即使是指针变量也不例外。

间接访问操作符

通过一个指针访问它所指向的地址的过程称为间接访问(indirection)或解引用指针&#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

源代码大师

赏点狗粮吧

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

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

打赏作者

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

抵扣说明:

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

余额充值