sizeof是关键字不是函数,就算不知道它是否为32 个关键字之一时,我们也可以借助编译器确定它的身份。来看看下面几种情况:

A),sizeof(int); B),sizeof(i); C),sizeof int; D),sizeof i;

32位系统下:

首先很明显A、B都是4.

我们用Visual C++6.0或者其他编译器来试下:

C报错syntax error : ‘type’
但是D输出结果也是4.

sizeof后面没有括号也是可以的,但是函数后面是不能没有括号的,所以sizeof绝不是函数。

不是说sizeof 是个关键字,其后面的括号可以没有么?那你想想sizeof int 表示什么啊?int 前面加一个关键字?类型扩展?明显不正确,我们可以在int 前加unsigned,const 等关键字但不能加sizeof。好,记住:sizeof 在计算变量所占空间大小时,括号可以省略,而计算类型(模子)大小时不能省略。一般情况下,咱也别偷这个懒,乖乖的写上括号,继续装作一个“函数”,做一个“披着函数皮的关键字”。

接下来我们来看看下面这几个表达式的值:(32位系统下)

int *p = NULL;   //这里不要写成Null,或者null
sizeof(p)是多少?
sizeof(*p)是多少?

解答:

sizeof(p)表示的是指针本身所占空间大小,32位下为4.
sizeof(*p)表示的是指针所指数据类型所占的大小,整型,也为4.
int   a[100];
sizeof(a)、sizeof(a[100])、sizeof(&a)、sizeof(&a[0])的值分别是多少?

解答:

首先sizeof(a)很明显是整个数组的大小,所以是400
sizeof(a[100]) 为4,a[100]是表示第100个元素的下一个元素,使用sizeof(a[100])不会出错的原因是sizeof 是关键字不是函数。函数求值是在运行的时候,而关键字sizeof求值是在编译的时候。虽然并不存在a[100] 这个元素,但是这里也并没有去真正访问a[100], 而是仅仅根据数组元素的类型来确定其值。
sizeof(&a)为4,表示存储地址空间大小,在Visual C++6.0下输出为400,可能编译器把a和&a等同起来了,虽然他们的值是一样的,但是意义不一样。
sizeof(&a[0]) 取第一个元素的地址,也是4
int b[100];
void fun(int b[100])
{
sizeof(b);// sizeof (b) 的值是多少?
}

解答:

还是为4,其实数组作为参数时,int b[100]和int b[]没区别,也就相当于int *b 。所以sizeof(b) 就是指针的大小。
分享到:0
用微信 OR 支付宝 扫描二维码
为本文作者 打个赏
金额随意 快来“打”我呀~

本文链接: http://www.bcoder.cn/?p=1435
转载请注明来源:bcoder编程学习网 《C语言sizeof是关键字还是函数?》

C语言sizeof是关键字还是函数?相关推荐

  1. C语言程序设计——volatile关键字、函数重入

    目录 一.volatile关键字 1.功能 2.使用场景 二.函数的可重入与不可重入 1.函数的重入 2.函数的可重入 3.函数的不可重入 4.函数可重入与不可重入的判断基准 5.注意场景 一.vol ...

  2. 如何求C语言字符串长度(strlen函数和sizeof关键字)

    如何求C语言字符串长度(strlen函数和sizeof关键字) 在程序里,一般会用***strlen()***函数或***sizeof()***来获取一个字符串的长度,但这2种方法获取的字符串的长度其 ...

  3. C语言深度剖析——关键字sizeof、整型数据存储深入、数据类型取值范围深入

    1.关键字sizeof sizeof 与 strlen 是我们日常打代码时经常使用到的两个"工具".前者是求变量或者类型的大小(单位为字节),后者是求某一字符串的长度.我们很容易产 ...

  4. c语言sizeof返回数据类型,sizeof函数返回值类型

    #include int main(void) { printf("type int has a size of (1)sizeof不是函数,它只是一个操作符(operator). (2)s ...

  5. sizeof 是关键字不是函数!使用sizeof需要注意?

    sizeof是关键字不是函数,其实就算不知道它是否为32个关键字之一时,我们也可以借助编译器确定它的身份.看下面的例子: int i=0: A),sizeof(int): B), sizeof(i): ...

  6. C语言再学习 -- 关键字sizeof与strlen

    sizeof  一.简单介绍 sizeof 是 C 语言的一种单目操作符,如 C 语言的其他操作符++.--等.它并不是函数.C 规定 sizeof 返回 sieze_t 类型的值.这是一个无符号整数 ...

  7. c 函数多次声明_【C语言】- static和extern关键字 - 对函数的作用!

    不同类型的变量有不同的存储类型.不同的生命周期.不同的作用域.这篇小文介绍2个比较重要的关键字:static和extern. static和extern不仅可以用在变量上,还可以用在函数上.这讲先介绍 ...

  8. C语言 sizeof 函数 - C语言零基础入门教程

    目录 一.sizeof 函数简介 二.sizeof 函数实战 三.猜你喜欢 零基础 C/C++ 学习路线推荐 : C/C++ 学习目录 >> C 语言基础入门 一.sizeof 函数简介 ...

  9. C语言 sizeof 和 strlen 函数区别 - C语言零基础入门教程

    目录 一.sizeof 函数与 strlen 函数区别 1.获取字符串长度 – 针对字符串 2.获取指针/数组长度 – 针对指针/数组 3.sizeof 获取内存大小 4.经典案例 二.猜你喜欢 零基 ...

最新文章

  1. win10键盘全部没反应_Win10笔记本键盘失灵怎么办 Win10键盘失灵解决方法【详解】...
  2. ruby中DBI连接MySQL数据库步骤详解
  3. 线程安全与锁优化(思维导图)
  4. 数学告诉你家庭关系的奥秘
  5. codeforces1456 D. XOR-gun
  6. ASP调用.Net dll
  7. go数据结构与算法| 稀疏数组
  8. Dev c++一些调试方法
  9. 左右伸缩_OPPO概念机将至!横向卷轴+左右伸缩,你期待吗
  10. 表哥首发送书100本,感谢老铁们支持!
  11. zabbix 3.0.7 for Centos 7.2 安装
  12. python循环的基本思想是重复_python基础-循环
  13. QCon上海2015精彩回顾和总结
  14. fydeos 安装linux程序,FydeOS安装教程-电脑系统安装手册
  15. 那个单位用计算机系统冷却,消防知识100题
  16. 17家中国初创公司的失败史
  17. 有类与无类路由下的路由匹配原则(转载)
  18. 计算机应用中的CAI,使用计算机来进行翻译属于计算机应用领域中的()。A.AIB.CAEC.CADD.CAI...
  19. 云服务器流量是什么东西_云服务器流量最大是多少?需要多少带宽?
  20. 嘉和美康科创板IPO:阿里健康是股东,副总姬铮并非核心技术人员

热门文章

  1. 互联网晚报 |10/26 星期三 | 苹果15将被强制使用USB-C;老干妈跌出贵州民企前10;2023国考报名首日突破16万人...
  2. 英语口语练习系列-C31-图书-谈论事物-白雪歌送武判官归京
  3. 解决iphonex开发时顶部和底部没有遮盖
  4. 使用jumpserver堡垒机管理王者荣耀服务器
  5. js数组转字符串 字符串转数组 去除字符串中的“ []格式
  6. 如何快速将PDF文件转换为Word文档
  7. 计算机二级Python真题(四)
  8. 百炼 1251:丛林中的路(Kruskal)
  9. 观澜放马埔旧村片区城市更新单元规划(草案)的公示
  10. 游戏感:虚拟感觉的游戏设计师指南——第五章 不再靠直觉:游戏感的测量方法