sizeof其实仅仅只是一个操作符,我们要注意它并不是一个函数,他就类似与常见的+、=、-......的操作符,并且sizeof是一个单目操作符。sizeof实际上是获取了数据在内存中所占用的存储空间,以字节为单位来计数。
我们在初学C语言时,就已经知道了sizeof可以计算各种数据类型的所占的存储空间。例如,回忆一下以下代码:
- #include
- int main()
- {
- printf("%d\n", sizeof(int));
- printf("%d\n", sizeof(char));
- printf("%d\n", sizeof(short));
- printf("%d\n", sizeof(long));
- printf("%d\n", sizeof(long long));
- printf("%d\n", sizeof(double));
- printf("%d\n", sizeof(float));
- printf("%d\n", sizeof(long double));
-
- return 0;
- }
运行出来的结果为(不同的计算器运行的结果部分不同):
4
1
2
4
8
8
4
8
我们可以看一下下面的例子:
- #include
- int main()
- {
- int a = 5;
- int b = 10;
- int arr[] = { 1,2,3,4 };
-
- printf("%d\n", sizeof(a));
- printf("%d\n", sizeof(b));
- printf("%d\n", sizeof(arr));
-
- return 0;
- }
运行的结果为:
4
4
16
用整个数组的sizeof去除以一个元素的sizeof。
数组的长度 = 数组所占的大小 / 单个数组元素所占的大小。
- #include
- int main()
- {
- int arr[] = {1,2,3,4,5,6};
- int len = sizeof(arr)/sizeof(arr[1]);
- printf("%d\n", len);
- return 0;
- }
运行的结果为:
6