A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 崔维友 中级黑马   /  2014-4-18 12:43  /  1206 人查看  /  0 人回复  /   1 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 崔维友 于 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

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马