【发布时间】:2021-12-06 00:36:45
【问题描述】:
这里有一个关于 sizeof(size_t) 和 sizeof(void*) 相等性的问题,接受的答案是它们不能保证相等。
但至少,必须是这样:
sizeof(void*) >= sizeof(size_t)
我想是的。因为,在给定的 C 实现中取最大的存储对象,大小为S。现在,可以将存储区域视为大小为S 的字节数组。因此,必须有一个指向每个字节的指针,并且所有这些指针都是可比的和不同的。因此,void* 类型的不同元素的数量必须至少是size_t 类型的最大数量,它是无符号整数类型。因此sizeof(void*) >= sizeof(size_t)。
我的推理是否合理?
【问题讨论】:
-
我没有看到标准中的任何内容阻止了 48 位指针和 64 位
size_t。 -
您的逻辑假设
size_t有正好 足够的位来表示最大可能的大小。它可以有更多。 -
@user2357112 支持莫妮卡哦,我明白了,谢谢,请回复我会接受的
标签: c language-lawyer