【发布时间】:2019-12-25 14:10:17
【问题描述】:
C 标准是否要求指针是(整数)数字?
有人可能会说是的,因为指针算法......
但是另一方面,像-- 或++ 这样的操作可能被理解为上一个内存位置,下一个内存位置,这取决于它们在标准和实际实现可以使用任何表示来保存指针数据(只要实现了提到的操作)......
想到另一个问题 - C 是否要求数组/缓冲区等是连续的,即下一个元素存储在 下一个内存位置(++p 其中 p 是一个指针)?我问是因为您经常可以在网上看到似乎假设它确实存在的实现。
【问题讨论】:
-
指针不是整数,而是作为数值处理。比如你将如何表示一个机器地址?!
-
C 标准使用术语抽象机。实际的实现只与(硬件)实现者相关。
-
@VladfromMoscow 好吧,例如:可以想象一台机器可以像我们寻址我们的家一样寻址内存单元。这很愚蠢,但有可能。
-
“C 是否要求数组/缓冲区等是连续的” 是的,“数组类型描述了一组连续分配的非空对象...” (C11)
标签: c pointers memory standards