size_t 类型总结

时间:2022-08-15 17:06:00

最近在阅读C代码过程中发现 大量使用size_t类型.以前看到该类型默认看做int.


一直没明白 他到底干嘛的.今天百度完后,在vs2005上找到了完整的定义:

很多解释的文章说size_t定义在   cstddef   中然而在该文件中.只找到如下说明    using ::ptrdiff_t; using ::size_t; 表示使用全局的 size_t类型.

其实vs2005中发现size_t定义在 crtdefs.h 中:

#ifndef _SIZE_T_DEFINED
#ifdef  _WIN64
typedef unsigned __int64    size_t;
#else
typedef _W64 unsigned int   size_t;
#endif
#define _SIZE_T_DEFINED
#endif

百科的解释还是非常详细的:


 在标准C/C++的语法中,只有int float char bool等基本的数据类型,至于size_t,或size_type都是以后的编程人员为了方便记忆所定义的一些便于理解的由基本数据类型的变体类型。

size_t 只是给 要使用的类型 定义了一个好记名字.

为什么是unsigned int 类型:  我的理解是win32系统中内存可寻址 2`32 ,也就是32系统内存中可计数数目 unsigned int.


size_t一般用来表示一种计数,比如有多少东西被拷贝等。例如:sizeof操作符的结果类型是size_t,该类型保证能容纳实现所建立的最大对象的字节大小。 它的意义大致是“适于计量内存中可容纳的数据项目个数的无符号整数类型”。所以,它在数组下标和内存管理函数之类的地方广泛使用。


http://www.cnblogs.com/li-hao/archive/2013/02/27/2935100.html  这篇文章最后说的比较明白.