它们在声明的位置、应在何时使用以及任何其他区别特征之间有什么size_t区别?std::size_t
size_t
std::size_t
Csize_t和C++std::size_t都是一样的。
在 C 中,它是<stddef.h>在 C++ 中定义的,其定义<cstddef>的内容与 C 头文件相同(参见下面的引用)。其定义为 sizeof* 运算符 结果 的 无符号整数类型 。 __ *
<stddef.h>
<cstddef>
C 标准在搂17.7/2 中说,
size_t 是 sizeof* 运算符结果 的 无 符号整数类型 __ *
C++ 标准cstddef在搂18.1/3 中说(关于标头),
cstddef
内容与标准 C 库头文件相同,但 有以下更改 。
所以,是的,两者都是一样的; 唯一的区别是 C++size_t在std命名空间中定义。
std
另请注意,上述行还说 “进行以下更改” ,而不是指size_t. 它更确切地说是指 C++ 对语言(C 中不存在)所做的新添加(大部分),这些添加也定义在同一个标题中。
维基百科有关于 size_t 的范围和存储大小的非常好的信息:
size_t的范围和存储大小 size_t的 实际 类型 取决于平台 ;一个 常见的错误 是假设 size_t 与 unsigned int 相同,这可能会导致编程错误,[3][4] 例如,从 32 位架构迁移到 64 位架构时。 根据 1999 ISO C 标准 (C99),size_t 是至少 16 位的无符号整数类型。
size_t的范围和存储大小
size_t的 实际 类型 取决于平台 ;一个 常见的错误 是假设 size_t 与 unsigned int 相同,这可能会导致编程错误,[3][4] 例如,从 32 位架构迁移到 64 位架构时。
根据 1999 ISO C 标准 (C99),size_t 是至少 16 位的无符号整数类型。
其余的你可以在维基百科的这个页面上阅读。