sizeof既是关键字,又是运算符(操作符),但不是函数!
sizeof是关键字吗
sizeof是关键字,这一点毋庸置疑。你不能将sizeof定义为任何标识符。查看C语言标准文档里的说明:

sizeof是运算符(操作符)吗
C语言中,sizeof是运算符(操作符),而且是唯一一个以单词形式出现的运算符,它用来计算存放某一个量需要占用多少字节,它的结合性是从右到左。查看C语言标准文档里的说明:

sizeof是函数吗
sizeof不是函数。产生这样的疑问主要是因为有时候sizeof的外在表现确实有点类似函数,比如:i = sizeof(int);这样的式子,就很容易让人误以为sizeof是一个函数呢。但如果sizeof是函数,那么sizeof i;(假设i为int变量)这种式子一定不能成立,因为函数的参数不可能不用括号括起来。事实上这个sizeof i;可以正常运行,这就说明sizeof绝对不是函数。
sizeof用法
sizeof顶着关键字的光环,发挥着(单目)运算符的作用。它主要用来计算某一个量在当前系统中所需占用的字节数:
常用类型大小测试:

普通变量大小测试:

常量大小测试:
注:计算sizeof('A');时,在C语言中这会发生隐式类型转换,将字符'A'转换为整型,但在C++中不会转换,sizeof('A')的值仍为1。

一维数组大小测试:

多维数组大小测试:

指针大小测试:

字符串大小测试:

小结
对语法存疑时,多查资料,以官方标准文档为准,并上机测试。
sizeof既是关键字,又是运算符(操作符),但不是函数!的更多相关文章
- 电脑快捷键与JAVA关键字、运算符
		
电脑快捷键: Alt+ESC切换到上一个操作的窗口 Alt+F4关闭当前窗口 Print Screen截取当前全屏幕到剪切板 Alt+Print Screen截取当前窗口到剪切板 Alt+Shift在 ...
 - C语言常用关键字及运算符操作---关键字
		
每个知识点4问: 1. 是什么? 2. 什么时间用? 3. 怎么用? 4.为什么这么用? 1. 32个关键字 //(1)sizeof 的用法 //sizeof 是关键字,让编译器帮我们查看内存空间存储 ...
 - 【Java】Operator 运算符/操作符
		
Operator 运算符/操作符 什么是操作符? 一个表示特定的数学或逻辑操作的符号 算术运算符 加 + 减 - 乘 * 除 / 取模 % 前置自运算 ++ a .--b 后置自运算 a++ .b-- ...
 - Linux基础-shell脚本知识整理和脚本编写----------变量、运算符、流程控制、函数、计划任务(发送邮件)
		
I:知识整理:变量.运算符.流程控制.函数.计划任务 变量 系统变量:set:显示所有变量 env:环境变量 常用系统变量: path pwd lang home his ...
 - [C++基础] 变量、关键字、运算符、位操作篇
		
一.变量篇 1 全局变量和静态变量有什么异同? 相同:都在静态存储区分配空间,生命周期与程序生命周期相同. 区别:全局变量的作用域是整个程序,它只需要在一个源文件中定义,就可以作用于所有的源文件.而静 ...
 - C语言的关键字,运算符,标识符
		
关键字 数据类型修饰相关 auto按照自动的方式进行变量的存储 const定义常量或常参数 extern声明外部变量或函数 register指定变量的存储类型是寄存器变量 static指定变量的存储类 ...
 - C++ operator关键字(重载操作符)(转)
		
operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名. 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算 ...
 - C++中operator关键字(重载操作符)
		
operator是C++的关键字,它和运算符一起使用,表示一个运算符函数,理解时应将operator=整体上视为一个函数名. 这是C++扩展运算符功能的方法,虽然样子古怪,但也可以理解:一方面要使运算 ...
 - 4.GDscript(2)关键字,运算符,字面量
		
(来源godot官方文档) 关键词 下面是该语言支持的关键字列表.由于关键字是保留字(令牌),它们不能用作标识符.操作符(如 in , not , and 或 or )以及下面列出的内置类型的名称也是 ...
 
随机推荐
- IE10 透明背景的div无法遮罩
			
在IE10中无法遮罩button按钮 <input type="button" value="76576" /> <div style=&qu ...
 - MySQL乱码解决办法
			
MySQL支持几十种编码方式,并且默认的编码为:latinl,如果MySQL出现了乱码情况,不要慌乱,一下为你介绍两种解决编码方式: 在控制台输入命令,注意MySQL中的UTF-8写成utf8,例如我 ...
 - iOS cocospods Updating local specs repositories
			
pod install --verbose --no-repo-update (在安装的时候) pod update --verbose --no-repo-update (在更新库的时候) 如果长时 ...
 - php日期时间函数和数学函数
			
<?php //第一部分:日期和时间函数 ----------------------------- time(); //int time(void),返回当前时间的时间戳 mktime(); ...
 - linux常用经典命令
			
1.查看cpu # 总核数 = 物理CPU个数 X 每颗物理CPU的核数 # 总逻辑CPU数 = 物理CPU个数 X 每颗物理CPU的核数 X 超线程数 # 查看物理CPU个数 #物理cpu个数 ...
 - 网页内嵌入QQ通信组件,唤起QQ,针对不同平台的处理方式
			
web浏览器中嵌入QQ通信组件,目前发现有两种方式,主要是区分 IOS平台(苹果系列)和其他平台(PC 安卓等……),下面是代码区别: <li><a href="http: ...
 - cat <<EOF用法
			
转自:http://blog.csdn.net/apache0554/article/details/45508631 cat <<EOF和cat <<-EOF两个都是获取st ...
 - 导入charts开源库到工程里面
			
http://blog.csdn.net/zww1984774346/article/details/50608338 http://blog.csdn.net/zww1984774346/artic ...
 - OWASP WEB会话管理备忘单 阅读笔记
			
https://www.owasp.org/index.php/Session_Management_Cheat_Sheet#Session_ID_Properties 会话简介 HTTP是一种无状态 ...
 - Access项目文件的版本控制
			
简单记录一下使用MS Access SVN(以下简称AccessSVN)的步骤吧. AccessSVN在http://accesssvn.codeplex.com/,该产品的目的是:Access SV ...