1
221
不一定!回到16位分段体系结构的时代,例如:一个数组可能仅限于一个段(所以16位
|
2
85
关于你的陈述:
这实际上是一个谬论(错误推理导致的误解) (a) .你可以 认为 后者来自前者,但事实并非如此。 指针和数组索引是 不 同样的事情。设想一个一致的实现,将数组限制为65536个元素,但允许指针将任何值寻址到大量的128位地址空间,这是很合理的。
C99规定a的上限
在实践中,您可能会发现您的假设是成立的,但这并不是因为标准保证了这一点。因为事实上 不 保证它。 (a) 这是 不 某种形式的人身攻击,顺便说一下,为什么你的陈述在批判性思维的背景下是错误的。例如,以下推理也是无效的:
小狗的可爱与否与此无关,我所说的只是这两个事实并不能得出结论,因为前两句话允许可爱的事物存在 不 小狗。 这类似于你的第一个陈述,不一定要求第二个陈述。 |
3
34
我将让所有其他的答案在分段限制的推理、奇异的体系结构等方面代表自己。 不是很简单吗 姓名差异 有足够的理由为正确的事情使用正确的类型吗?
如果要储存尺寸,请使用
否则,你只需使用
|
4
13
最大数组的大小可能小于指针。想想分段的架构——指针可以是32位,但是一个段只能寻址64kb(例如旧的实模式8086架构)。 虽然这些在台式机中不再普遍使用,但C标准旨在支持更小的、专门化的体系结构。例如,仍有一些嵌入式系统是用8位或16位CPU开发的。 |
5
5
我可以想象(这适用于所有类型名),它更好地用代码表达您的意图。
例如,即使
|
6
3
回顾过去和过去,我记得各种奇怪的架构分散在风景中,我很确定他们试图包装所有现有的系统,并提供所有可能的未来系统。 当然,事情解决的方式,我们到目前为止还不需要这么多的类型。 但即使在LP64(一个相当常见的范例)中,我们也需要系统调用接口的大小和ssize。我们可以想象一个更受约束的遗留系统或未来系统,使用一个完整的64位类型是昂贵的,它们可能希望在大于4GB的I/O操作上投入资金,但仍然有64位指针。 我想你必须想一想:什么可能被开发出来,什么可能在未来出现。(可能是128位分布式系统互联网范围指针,但在系统调用中不超过64位,甚至可能是“遗留”32位限制。:-)旧系统可能会获得新的C编译器的映像… 另外,看看当时的情况。除了Zillion 286实模式内存模型外,CDC 60位字/18位指针主机呢?克雷系列怎么样?别介意普通的ILP64,LP64,LLP64。(我一直认为微软是以llp64为借口,应该是p64。)我可以想象,一个委员会试图覆盖所有的基础…… |
7
-8
这意味着intptr必须总是用大小来代替,反之亦然。 |
HighPredator · 使用size_t进行void指针模拟 9 年前 |
Chen Gupta · 比较c++代码中size_t变量与-1(最大大小值) 10 年前 |
J Collins · 在数组迭代器中使用size_t 10 年前 |