c语言指向读取的字节数的指针,c - C语言中指针的大小 - SO中文参考 - www.soinside.com...

数据存储在内存中。该内存有一个地址。指针保存数据开始。的内存地址。

具体地说,指针通常保存类型所驻留的数据的“第一个字节”的地址(注意,从技术上讲,第一个字节可能包含数据的最后一位,具体取决于endianness。

即,如果long double是128位(16字节),则指针值将指向第一个字节,而指针类型将指示应读取的字节数。

如果您将示例中的long double指针“广播”到int *(int指针),则仅会读取sizeof(int)字节-但是值(第一个字节的地址)将保留一样。

因此,指针值忽略了数据的大小,指针仅需要足够大才能包含第一个字节的地址。因此,指针通常具有与computer's "address space"相同的长度。

它非常类似于图书馆中的目录卡。就像库中的“书本地址”取决于库的大小一样,指针值(内存地址)也取决于计算机的“地址空间”的大小,不是类型的大小。] >

在大多数32位和64位CPU上,地址空间限制为32位或64位。但是,某些系统具有用于特殊指针(例如函数指针)的特殊地址空间...这几乎已过时。当CPUS小于32位并且“地址空间”受到限制时,它被更多地使用。

请注意,地址空间(指针)中的值可以指向硬件上的任何位置(通常是内存中的一个字节,但有时是寄存器或一块硬件)...这就是为什么操作系统(内核)可以利用一些硬件支持,通常会为每个进程公开一个“虚拟”地址空间,从而保护硬件和其他处理过程免受异常进程的影响。

P.S。

我喜欢@linuxfansaysReinstateMonica给出的答案。但是,我发现我想澄清该答案中的一些信息。您应该真正阅读它。该答案主要是对其答案的澄清。

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值