黑马程序员技术交流社区
标题: C语言中sizeof是关键字 [打印本页]
作者: 崔维友 时间: 2014-4-18 12:43
标题: C语言中sizeof是关键字
本帖最后由 崔维友 于 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
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |