c - c语言中指针的大小
问题描述
指针的大小是什么意思?指针的大小不应该取决于类型吗?大多数消息来源都说指针的大小是 4 字节还是 8 字节。我需要澄清一下这个说法。
解决方案
对于指针的大小,我的意思是将该指针保存在内存中或通过某个通道发送其值所需的位数(或字节),这(可能)与指针指向的对象的大小不同。
然后,可以假设指针大小通常为 32 或 64 位(4 或 8 字节)的断言是相当正确的,因为经常谈论的系统(计算机、智能手机和平板电脑)具有这种大小的指针。
但是周围还有其他系统,例如基于 DOS 的 PC 或嵌入式系统的微控制器,其中指针可以是 16 位宽甚至更小,以及总线宽度为 128 位的更大系统。
我过去使用 Intel 8051 CPU,它有 8 位宽、16 位宽和 24 位宽的指针。当然,它们不能自由混合……那个 CPU 确实很奇怪,有大约 3-4 个不同(而且很少)的内存区域;“专用”指针只能指向其特殊区域,而 24 位宽的指针可以指向任何区域,因为在高字节中有一个“选择器”。
另一个问题是指针指向的对象的大小。在普通计算机上它是一个字节,但有时,在某些系统上,不可能以这种方式寻址奇数地址上的字节,因此指针运算变得复杂。8051(我喜欢它!)甚至有指向位的指针!因此,指向对象的大小实际上是 8 个字节,并且将指针递增 1 可以或不能寻址与以前不同的内存位置。
推荐阅读
- javascript - 无法使用 Symfony 从 GET 请求中检索数据
- python - 如何从 python 中的应用程序获取图标?
- c++ - '227进入被动模式'后未收到响应
- vue.js - Vue Dropzone:在一个 POST 中从多个实例发送文件
- sql - Vertica:创建视图
- kubernetes - 如何在虚拟服务的目标中添加重写 uri
- php - 在 displayForm() 方法 Prestashop 1.7 上激活 TinyMCE
- postgresql - 如何在 keycloak-10.0.1 上更改 postgresql 数据库配置
- assembly - MIPS SW & LW 负偏移
- javascript - 对于 Angular,我如何获得在加载时调用的函数