没有合适的资源?快使用搜索试试~ 我知道了~
C语言里sizeof的用法
资源推荐
资源详情
资源评论
1. 定义:
sizeof 是何方神圣 sizeof 乃 C/C++中的一个操作符(operator)是也,简单的说其作用就是返回一个对象
或者类型所占的内存字节数。
MSDN 上的解释为:
The sizeof keyword gives the amount of storage, in bytes, associated with a variable or a type
(including aggregate types). This keyword returns a value of type size_t.
其返回值类型为 size_t,在头文件 stddef.h 中定义。这是一个依赖于编译系统的值,一般定义为
typedef unsigned int size_t;
世上编译器林林总总,但作为一个规范,它们都会保证 char、signed char 和 unsigned char 的 sizeof 值
为 1,毕竟 char 是我们编程能用的最小数据类型。
2. 语法:
sizeof 有三种语法形式,如下:
1) sizeof( object ); // sizeof( 对象 );
2) sizeof( type_name ); // sizeof( 类型 );
3) sizeof object; // sizeof 对象;
所以,
int i;
sizeof( i ); // ok
sizeof i; // ok
sizeof( int ); // ok
sizeof int; // error
既然写法 3 可以用写法 1 代替,为求形式统一以及减少我们大脑的负担,第 3 种写法,忘掉它吧!实际上,
sizeof 计算对象的大小也是转换成对对象类型的计算,也就是说,同种类型的不同对象其 sizeof 值都是一
致的。这里,对象可以进一步延伸至表达式,即 sizeof 可以对一个表达式求值,编译器根据表达式的最
终结果类型来确定大小,一般不会对表达式进行计算。如:
sizeof( 2 );// 2 的类型为 int,所以等价于 sizeof( int );sizeof( 2 + 3.14 ); // 3.14 的类型为 double,2 也会
被提升成 double 类型,所以等价于 sizeof( double );sizeof 也可以对一个函数调用求值,其结果是函数返
回类型的大小,函数并不会被调用,我们来看一个完整的例子:
char foo()
{
printf("foo() has been called.");
return 'a';
}
int main()
{
size_t sz = sizeof( foo() ); // foo() 的返回值类型为 char,所以 sz = sizeof(char ),foo()并不会被调用
printf("sizeof( foo() ) = %d", sz);
}
C99 标准规定,函数、不能确定类型的表达式以及位域(bit-field)成员不能被计算 sizeof 值,即下面这
些写法都是错误的:
sizeof( foo );// error
void foo2() { }
sizeof( foo2() );// error
struct S
{
unsigned int f1 : 1;
资源评论
weixin_38748263
- 粉丝: 6
- 资源: 894
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
- 基于Python的在线学习与推荐系统设计与实现(论文+源码)-kaic
- 蓝桥杯2024年第十五届省赛真题-前缀总分
- com.qihoo.appstore_300101305-1.apk
- tensorflow-gpu-2.7.1-cp37-cp37m-manylinux2010-x86-64.whl
- tensorflow-2.7.2-cp37-cp37m-manylinux2010-x86-64.whl
- tensorflow-2.7.1-cp39-cp39-manylinux2010-x86-64.whl
- 蓝桥杯2024年第十五届省赛真题-传送阵
- com.qihoo.appstore_300101305.apk
- linux之线程同步一.doc
- keil5配色方案10种
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功