https://www.geeksforgeeks.org/sizeof-operator-c/
可用于数据类型或表达式(包含变量),不属于任何头文件,编译器内置操作符,编译时用常数值替换sizeof,不是运行时计算的
- 当用于数据类型时,返回该类型在内存中占用的字节数。(sizeof(int ) === 2)
- 当用于表达式时,返回表达式值占用的字节数
注意
- 可用于计算数组大小,sizeof(arr) / sizeof(float) //arr size: 5
- 可用于动态申请内存块,int * ptr = (int*)malloc(10 * sizeof(int))
- 不要用sizeof计算数组参数的size(数组参数被当作指针处理了),即必须用在数组定义的函数里面
#include <stdio.h>
void demo(float arr[]) {
printf("arr size: %d\n", sizeof(arr) / sizeof(float)); //arr size: 2
}
int main(int argc, char **argv) {
float arr[] = {1.0, 2.0, 3.0, 4.0, 5.0};
printf("arr size: %d\n", sizeof(arr) / sizeof(float)); //arr size: 5
demo(arr);
return 0;
}