指针 & 地址的联系和区别

本文探讨了C/C++中的指针和地址的概念。地址是从0开始的内存字节编号,通常用16进制表示,而指针是存储这些地址的变量。两者之间的联系在于指针可以保存地址。地址和指针的区别在于,地址是数值,指针是变量。在数组中,相邻元素地址相差字节数,这与数据类型大小有关。指针运算在地址上表现为地址偏移。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

参考文章

C语言(彻底理解指针和地址,彻底!)

地址

地址是内存中每个字节的编号。

假设现有一个 4G 容量的内存,换算成字节为:

4G  = 4 * 1024 * 1024 * 1024
    = 4294967296 Byte

由于地址是从 0 开始算的,所以其能够表示的范围(十进制)为 0 - 4294967295

在计算机领域内不会使用10进制,而是使用二进制,范围为:

0000 0000 0000 0000 0000 0000 0000 0000
<->
1111 1111 1111 1111 1111 1111 1111 1111

为什么用如上的方式表示呢??而不是用 0 - 1111 1111 1111 1111 1111 1111 1111 1111 来表示呢??实际这么做也是可以的!不过最好推荐是使用如上的方式表示,为什么这么推荐呢??例如现在有一个 1000 人参赛的赛场,需要对参赛的 1000 人分配编号,你会怎么分配??是使用 0 - 999 进行分配还是使用 000 - 999 进行分配??肯定是使用 000 - 999 进行分配吧,同理可得。

但显然使用二进制的方式表示足足有 32bit 的长度!!太长了,所以人们实际上使用的是16进制来表示地址!范围是:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值