sizeof 运算符和size_t 类型


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数组看做一个包含二维数组的数组.


©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 第2章 基本语法 2.1 概述 基本句法和变量 语句 JavaScript程序的执行单位为行(line),也就是一...
    悟名先生阅读 4,221评论 0 13
  • C++运算符重载-下篇 本章内容:1. 运算符重载的概述2. 重载算术运算符3. 重载按位运算符和二元逻辑运算符4...
    Haley_2013阅读 1,485评论 0 49
  • 老同学,见个面吧。 毕业后各奔东西, 成家后各自忙碌, 一晃这么多年过去了, 我们都老了,也发福了。 老同学,见个...
    果味儿99阅读 369评论 1 2
  • 简书年终总结润色完毕。点击发布。朋友圈分享。随后各种提示音此起彼伏。 难得清闲一人在家,享受足不出户自得其乐的安逸...
    圆善阅读 887评论 9 8
  • 我以无语, 今天晚上是一个surprised。 今天感觉是要活出头了,面对着电脑也能玩真正的大型网络游戏。但是我以...
    阿飞1991阅读 110评论 0 0