• size_t 类型


    1 关于size_t定义

      size_t是一种数据相关的无符号类型,它被设计得足够大以便能够内存中任意对象的大小。在cstddef头文件中定义了size_t类型,这个文件是C标准库stddef.h头文件的C++版本。

      在需要通过数组下标来访问数组时,通常建议将下标定义size_t类型,因为一般来说在进行下标访问时,下标都是正的。当然,也不是所有的下标访问操作下标都是正的,比如以下代码:

    int a[10]={1,2,3,4,5,6,7,8,9,10};
    
    int * ptr =&(a[4]);
    
    cout<<ptr[-2]<<endl;

      这段代码中对ptr进行了下标访问,并且下标是负的,但是这个访问并不是错误的,执行的结果是输出3。

    2 在Visual Studio2012中查看size_t 的定义

             在VS中,选中size_t,右键调出菜单,选择“转到定义”,会自动跳转到size_t的定义位置。在我的机子上,跳到了的文件目录:d:Program Files (x86)Microsoft Visual Studio 11.0VCincludecrtdefs.h。(这里为什么跳到了crtdef.h这个头文件而不是上面说的cstddef头文件?)

             来看看在windows下是如何定义这个size_t的:

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

      如上所示,size_t的定义是和系统相关的。

    3 size_t作用

      显然,size_t的取值与机器相关,某些情况下正确的使用size_t可以提高程序的可移植性和有效性。

    4 一篇关于size_t的博客:why size_t matters

  • 相关阅读:
    1004 成绩排名
    antd 时间控件
    C语言基础知识2
    OC语言基础知识
    C语言基础知识
    清华大学EMBA总裁班教授翟万宝对阅读的看法
    redis 5.0.2 源码阅读——快速列表quicklist
    封装hiredis——C++与redis对接(一)(string的SET与GET操作)
    redis 5.0.2 源码阅读——压缩列表ziplist
    redis 5.0.2 源码阅读——整数集合intset
  • 原文地址:https://www.cnblogs.com/xiongmao-cpp/p/5233760.html
Copyright © 2020-2023  润新知