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