本帖最后由 崔维友 于 2014-4-18 12:46 编辑
通常我们会使用sizeof()来计算一个变量或基本数据类型占用多少内存,如: - printf("%d\n", sizeof(short)); //结果为2
复制代码
看起来有括号,有参数,就是一个函数。但你有没有这样用过: - short i;
- printf("%d\n", sizeof i); //结果为2
复制代码
没有了括号,似乎不伦不类了。如果是函数就必须有括号对吧,看来sizeof不是函数哦。如果你查过C语言的关键字,就会确信sizeof 是关键字不是函数。
C语言中sizeof 是个关键字,也是一种单目操作符,如同++、--运算。sizeof在计算变量所占空间大小时,括号可以省略,而计算类型大小时不能省略。
当操作数具有数组类型时,其结果是数组的总字节数。 - char a[5];
- int b[5];
- printf("%d\n", sizeof(a));//5
- printf("%d\n", sizeof(b));//20
复制代码
当操作数是具体的字符串或者数值时,会根据具体的类型进行相应转化。 - printf("%d\n", sizeof(8));//4。自动转化为int类型
- printf("%d\n", sizeof(8.8));//8。自动转化为double类型,注意,不是float类型
- printf("%d\n", sizeof("ab"));//3。自动转化为数组类型,结尾有'\0'符
复制代码
sizeof还可以计算数组中元素的个数。 - char str[] = {'a', 'b', 'c', 'd', 'e'};
- printf("%d\n", sizeof str); //5
复制代码
- end
|