任何人都可以解释为什么size_t类型与一个例子一起使用?

MiN*_*EaK 7 c c++

我想知道为什么size_t在我可以使用say int类型的地方使用它.它说这size_t是一种返回类型的sizeof运算符.这是什么意思?就像我使用sizeof(int)并存储它返回int类型变量的内容一样,它也可以工作,没有必要将它存储在一个size_t类型变量中.我只是清楚地想要了解使用的基本概念以及size_t一个明显可以理解的例子.谢谢

Pub*_*bby 10

size_t保证能够代表可能的最大尺寸,int不是.这意味着size_t更便携.

例如,如果int只能存储多达255但你可以分配5000字节的数组呢?显然,这不会起作用,但是size_t会有效.

  • 从技术上讲,`int` 必须至少为 16 位,因为它必须至少跨越 [-32767..32767] 范围。(为什么不 -32768?为了容纳补码和符号和大小系统,以防有人想在旧的 Univac 机器上使用 C。当然,那些有 18 位和 36 位整数,9 位`字符`。) (2认同)

tor*_*rek 6

最简单的例子已经过时了:在int具有 64 k RAM的旧 16 位系统上,an 的值int可以是从 -32768 到 +32767 的任何位置,但之后:

char buf[40960];
Run Code Online (Sandbox Code Playgroud)

缓冲区buf占用 40 KB,因此sizeof buf太大而无法放入int,并且需要一个unsigned int.

如果您使用 32 位int但允许程序一次访问超过 4 GB 的 RAM,那么今天可能会发生同样的事情,就像所谓的“I32LP64”模型(32 位int、64 位long和指针)一样。这里的类型size_t将与unsigned long.