为什么size_t当int足以满足数组的大小?

Phi*_*lip 13 c int standards size-t

C标准保证int能够存储每个可能的数组大小.至少,这是我从阅读§6.5.2.1,第1小节(数组下标约束)中理解的内容:

其中一个表达式应具有类型''指向对象类型的指针'',另一个表达式应具有整数类型,结果具有类型''type''.

既然我们将ints用作数组下标,为什么我们应该用它size_t来确定数组的大小?

为什么strlen()回报size_t什么时候int就够了?

Mic*_*urr 25

术语"整数类型"并不意味着int- 例如char,并且short是整数类型.

仅仅因为你可以使用一个int下标数组并不一定意味着它可以到达所有可能的数组元素.

更具体地约size_tint,一个例子是平台,其中int可能是一个16位的类型和size_t可能是一个32位的类型(或更常见的32位int和64位的size_t差当今64位平台).


Vla*_*oub 6

整数类型不一定是"int"."long long"也是一个整数类型,"size_t"也是如此.

数组可以大于2GB.对于那些编写内存饥饿程序的人来说,这个属性非常方便,例如带有大缓冲池的DBMS,带有大内存缓存的应用程序服务器等.大于2GB/4GB的阵列是64位计算的全部要点:)

strlen()的size_t,至少听起来与C标准处理数组的方式兼容,是否具有实际意义,或者是否有人看到过大的字符串,这是另一个问题.