黑马程序员技术交流社区

标题: C语言中sizeof是关键字 [打印本页]

作者: 崔维友    时间: 2014-4-18 12:43
标题: C语言中sizeof是关键字
本帖最后由 崔维友 于 2014-4-18 12:46 编辑

通常我们会使用sizeof()来计算一个变量或基本数据类型占用多少内存,如:
  1. printf("%d\n", sizeof(short));        //结果为2
复制代码

看起来有括号,有参数,就是一个函数。但你有没有这样用过:
  1.         short i;
  2.         printf("%d\n", sizeof i);        //结果为2
复制代码

没有了括号,似乎不伦不类了。如果是函数就必须有括号对吧,看来sizeof不是函数哦。如果你查过C语言的关键字,就会确信sizeof 是关键字不是函数

C语言中sizeof 是个关键字,也是一种单目操作符,如同++--运算。sizeof在计算变量所占空间大小时,括号可以省略,而计算类型大小时不能省略。

当操作数具有数组类型时,其结果是数组的总字节数。
  1.     char a[5];
  2.     int b[5];
  3.     printf("%d\n", sizeof(a));//5
  4.     printf("%d\n", sizeof(b));//20
复制代码

    当操作数是具体的字符串或者数值时,会根据具体的类型进行相应转化。
  1.     printf("%d\n", sizeof(8));//4。自动转化为int类型
  2.     printf("%d\n", sizeof(8.8));//8。自动转化为double类型,注意,不是float类型
  3.     printf("%d\n", sizeof("ab"));//3。自动转化为数组类型,结尾有'\0'符
复制代码

    sizeof还可以计算数组中元素的个数。
  1.     char str[] = {'a', 'b', 'c', 'd', 'e'};
  2.     printf("%d\n", sizeof str);        //5
复制代码

- end






欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2