sizeof()
可以计算元素个数
msdn对sizeof的原解释
sizeof是C语言中的一个关键字,计算类型或变量大小,单位是字节
#include <stido.h>
int main()
{
int arr[10] = { 0 };
printf("%d\n", sizeof(arr));
return 0;
}
这里输出的值是 40,单位是字节
我们知道一个数组中的每个元素的类型相同,所以储存时所占内存也是相同的,由此我们便可以算出元素的总个数
char 类型 ---- 1个字节
int 类型 ---- 4个字节
float 类型 ---- 4个字节
long 类型 ---- (32位上是4个字节,64位上是8个字节)
long long 类型 ---- 8个字节
#include <stido.h>
int main()
{
int arr[10] = {0};
printf("%d\n", sizeof(arr[0]));//计算⼀个元素的⼤⼩,单位是字节
return 0;
}
这里输出的值是 4,单位是字节
由此,我们用 数组总内存大小 / 数组中单个元素内存大小 可计算出元素个数
#include <stido.h>
int main()
{
int arr[10] = {0};
int sz = sizeof(arr)/sizeof(arr[0]);
printf("%d\n", sz);
return 0;
}
这里输出的值是 10,所以该数组的元素个数为10个
关于为什么要计算出元素个数,有人说不是初始化的时候已经写好了数组的大小了嘛?
那如果给你一个未知数组呢?当我们写一个函数,想把数组和元素个数传给函数时就要该计算元素个数的操作
注意:sizeof+数组名时,数组名代指的是整个数组,而不是首元素的地址