sizeof 小结
来源:互联网 发布:python jupyter 编辑:程序博客网 时间:2024/06/04 19:27
古人云:万事预则立,不预则废。所以,最近看了好多面试题。现在把有关sizeof的知识总结一下,大部分内容是从网上所搜出来的,写在这里只是为了做了记录,如果正好触碰到您的原版权,见谅!
首先,sizeof倒是什么?在许多关于c/c++的语法书籍中,我们会看到sizeof和诸如+,-,×等这些操作符放在一起,而且还有优先级。sizeof是一元操作符,它的作用是返回操作数的大小,以字节为单位。它的语法形式如:sizeof(type-name),例证:
#include <iostream>
using namespace std;
int main(int argc,char*argv[])
{
cout<<sizeof(int)<<endl;
}
输出的结构:4
sizeof貌似是一个函数:有参数,有返回值。但,千万别误导。其实,它还有一种语法形式:sizeof unary-expression,例证:
#include <iostream>
using namespace std;
int main(int argc,char*argv[])
{
int a = 0;
cout<<sizeof a<<endl;
}
输出的结果:4
你见过,不带函数调用符的函数调用吗?没有。所以,sizeof不是一个函数。与其说它是一个一元操作符,还不如说它是一个宏,因为它是在编译阶段求值的。我们在代码中输入cout<<sizeof(1==1)<<endl;相当于输入了cout<<sizeof(bool)<<endl;如果我们这样写会输出怎么的结果呢?
#include <iostream>
using namespace std;
int main(int argc,char*argv[])
{
int a = 0;
cout<<sizeof(a = 3)<<endl;
cout<<a<<endl;
}
输出结果:4 0
是不是和你想的一样呢?出现这样的结果,就在于sizeof是在编译阶段处理的。由于sizeof不能被编译成机器码,所以sizeof作用范围内,也就是()里面的内容也不能被编译成,而是被替换成类型。=操作符返回左操作数的类型,所以a = 3相当于int,而代码也被替换为:
#include <iostream>
using namespace std;
int main(int argc,char*argv[])
{
int a = 0;
cout<<sizeof(int)<<endl;
cout<<a<<endl;
}
所以在使用sizeof的时候,只看()内表达式的返回类型,然后用返回类型把原参数替换,再去编译。
sizeof有两种用法:
1.sizeof(object)也就是对对象使用sizeof,也可以写成sizeof object的形式。
2.sizeof(type-name),注意这种情况下写成sizeof type-name是非法的。
- sizeof小结
- sizeof 小结
- sizeof小结
- sizeof 小结
- sizeof小结
- sizeof小结
- sizeof用法小结
- SIZEOF用法小结
- sizeof用法小结
- sizeof用法小结
- 关键字sizeof()小结
- 关键字sizeof()小结
- 小结:sizeof与strlen比较
- sizeof对指针运算小结
- C++ sizeof 与 strlen 小结
- strlen和sizeof的区别小结
- C++中sizeof 求 string 大小 小结
- C++ 预处理、const与sizeof 知识点 小结
- wlan无线ap的几个知识
- CodeFile 与 CodeBehind 的区别
- 软件保护壳技术专题 - 反调试器技术
- 什么是人才中的人才?(转载)
- Windows Embedded CE 6.0 下载地址
- sizeof 小结
- .NET资源文件(Resources)和语言文化信息(Culture)的使用
- 配置linux中的ftp服务器
- Trufun kant for C++双向工程操作指南
- fs TIB TEB PEB
- 编写SQL查询的关键—SQL语句的执行顺序
- log4j.properties 使用
- [转]srand和rand这两个函数
- 经典算法10