美文网首页
sizeof 运算符和size_t 类型

sizeof 运算符和size_t 类型

作者: 吃竹子的二哈 | 来源:发表于2018-08-25 13:21 被阅读0次

    sizeof运算符

    sizeof运算符可以计算出指定类型的变量所占用的字节数, 应当对

    • 类型名称
    • 变量
    • 数组

    使用 sizeof 运算符,如下:

    //对类型名称应用sizeof 运算符
    printf("The size of a variable of type long is %zu bytes.\n", sizeof(long));
    
    //对变量应用sizeof 运算符
    long i=0;
    printf("The size of i is %zu bytes.\n", sizeof(i));
    
    //对数组应用sizeof 运算符
    double array[5]={1.5, 2.5, 3.5, 4.5, 5.5} ; //声明一个数组
    printf("The size of the array is %zu bytes.\n", sizeof(array));
    

    需要指出的是, sizeof 运算符后 类型名称 外的括号是必需的(言外之意, 如果sizeof运算符后是数组或者变量, 括号可以不加), 如果漏了它, 代码就不会编译


    size_t类型

    sizeof 运算符生成size_t 类型的值,该类型取决于实现代码,一般是无符号的整数类型.如果使用%u说明符,编译器可能会发出警告, 使用%zu说明符可以消除该警告

    size_t全称应该是 size type. 是一种用来 记录大小(size) 的数据类型. 里面保存的是一个 整数 ,是类似于int, long 类型一样.

    因为size_t 类型的数据其实是保存了一个整数, 所以它也可以做加减乘除, 也可以转换为int类型的变量


    sizeof 运算符 和 size_t 类型的应用

    计算数组中元素的数目
    size_t element_count = sizeof(array)/sizeof(array[0]);
    

    原理是:

    数组占用的内存是单个元素的字节数乘以元素个数, 计算数组中元素的数目时, 反其道而行之

    在循环处理数组中所有的元素时
    for(size_t i=0;i<sizeof(array)/sizeof(array[0]);i++)
    printf("%.2f",array[i]);
    
    在处理多维数组所有元素时

    使用sizeof运算符可以确定多维数组中每维度的元素个数. 只需要弄明白sizeof运算符生成的结果即可.

    for(size_t i=0;i<sizeof(numbers)/sizeof(numbers[0]);i++)
    {
          for(size_t j=0;j<sizeof(numbers)/sizeof(numbers[0]);j++)
          {
                   for(size_t k=0;k<sizeof(numbers)/sizeof(numbers[0]);k++)
                  {
                          sum+=numbers[i][j][k];
                  }
          }
    }
    

    提示: 可以把numbers数组看做一个包含二维数组的数组.


    相关文章

      网友评论

          本文标题:sizeof 运算符和size_t 类型

          本文链接:https://www.haomeiwen.com/subject/nttgiftx.html