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

毫无疑问, 32 位系统下A), B)的值为4。那C)的呢? D)的呢?
在32 位系统下,通过Visual C++6.0 或任意一编译器调试,我们发现:

D)的结果也为4。咦? sizeof 后面的括号呢?没有括号居然也行, 函数名后面没有括号行吗?由此轻易得出sizeof 绝非函数。

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

使用sizeof需要注意?

file1.c

int array[ ] = {1,2,3};

file2.c

extern int array[ ];
printf("%d\n",sizeof(array));

在file2.c,sizeof取不到arrary的大小,因为:未指定大小的extern数组是不完全类型,不能对他使用sizeof,sizeof在编译时发生作用,他不能获得定义在另一个文件中的数组大小。

sizeof 是关键字不是函数!使用sizeof需要注意?相关推荐

  1. C语言sizeof是关键字还是函数?

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

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

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

  3. C语言中,strlen()函数与sizeof()运算符的区别以及用法区别

    C语言编程中,会频繁地对数据进行操作. 其中为了防止内存的非法占用,判断数据的长度或者变量的大小是非常有必要的操作. 最常用的就是strlen()函数或者sizeof()运算符. 那么strlen() ...

  4. python sizeof函数_C++ sizeof 运算符 | 菜鸟教程

    C++ sizeof 运算符 sizeof 是一个关键字,它是一个编译时运算符,用于判断变量或数据类型的字节大小. sizeof 运算符可用于获取类.结构.共用体和其他用户自定义数据类型的大小. 使用 ...

  5. C语言学习笔记---strlen()函数和sizeof()函数

      strlen() 函数和 sizeof() 函数通常都可以用来计算数组或者字符串的长度.在使用的时候很容易混淆.下面就通过几个简单的示例来看一看这两个函数的具体差别. int main() {ch ...

  6. C语言strlen函数与sizeof函数的区别

    strlen函数与sizeof函数的区别 strlen函数和sizeof函数都可以用于获取字符串的长度,但是它们有几个重要的区别. strlen函数返回字符串的长度,而sizeof函数返回的是整个数组 ...

  7. c语言中sizeof结构体,C语言中的sizeof用法

    C语言中的sizeof是一个很有意思的关键字,经常有人用不对,搞不清不是什么.我以前也有用错的时候,现在写一写,也算是提醒一下自己吧.反正现在来看,还在搞sizeof是什么意思,怎么用正确,还是有点搞 ...

  8. sizeof 头文件_c/c++基础之sizeof用法

    在 C/C++ 中,sizeof() 是一个判断数据类型或者表达式长度的运算符. 1 sizeof 定义 sizeof 是 C/C++ 中的一个操作符(operator),返回一个对象或者类型所占的内 ...

  9. c语言sizeof(test),解析C语言中的sizeof

    一.sizeof的概念 sizeof是C语言的一种单目操作符,如C语言的其他操作符++.--等.它并不是函数.sizeof操作符以字节形式给出了其操作数的存储大小.操作数可以是一个表达式或括在括号内的 ...

最新文章

  1. C++ Builder创建和调用dll中的资源
  2. 初级软件实作 - 星便笺 - 之二 - 富文本控件扩展
  3. 避免重蹈欧美“超级电厂”覆辙 瑞星全力保障国内电力行业信息安全
  4. 回归素材(part1)--实用机器学习
  5. C++起始(内联函数,宏的优缺点,const关键字,auto关键字(C++11)基于范围的for循环(C++11). 指针空值nullptr(C++11))
  6. cvc降噪和主动降噪_1MORE 主动降噪圈铁耳机图集
  7. 再谈迭代器,生成器,yield,及和类的使用
  8. CentOS6.6安装cobbler
  9. sharepoint2013爬xls文件:Error initializing IFilter for extension的解决方案
  10. BASH系列(2)——变量
  11. 《Shell 脚本学习指南 》 -- 背景知识与入门 [第一、二章]
  12. Outlook邮箱注册详解教程
  13. 老宇哥带你玩转ESP32,12篇基础教程已经更新完毕,接下来是进阶教程
  14. linux airplay 客户端,iOS/MAC OSX airplay 使用教程 (更新macosx下的正确使用方式)
  15. 怎样来实现数据接口的加密?
  16. tmux常用命令大全
  17. 华清远见第一周学习体会
  18. 题解 洛谷 P4042 [AHOI2014/JSOI2014]骑士游戏
  19. WaveDrom的使用
  20. 推荐一个医疗器械管理软件能通过gsp并且有追溯功能的

热门文章

  1. BZOJ.3257.树的难题(树形DP)
  2. phpstudy composer 安装YII2
  3. UntraEdit 语法高亮 (MSSQL)
  4. 实际程序调用IndexWriter* writer = NULL
  5. Eigen 模板库的简介
  6. layUI 实现自定义弹窗
  7. C#获取枚举描述代码
  8. Python3判断自身脚本是不是在运行
  9. [20170419]bbed探究数据块.txt
  10. oc-21-class对象