1 / 7
文档名称:

C语言sizeof用法.docx

格式:docx   页数:7页
下载后只包含 1 个 DOCX 格式的文档,没有任何的图纸或源代码,查看文件列表

如果您已付费下载过本站文档,您可以点这里二次下载

分享

预览

C语言sizeof用法.docx

上传人:xxj16588 2016/3/25 文件大小:0 KB

下载得到文件列表

C语言sizeof用法.docx

文档介绍

文档介绍:SIZEOF 用法 C 语言中判断数据类型长度符用法 sizeof( 类型说明符,数组名或表达式); 或 sizeof 变量名 1. 定义: sizeof 是 C/C++ 中的一个操作符( operator ) 是也, 简单的说其作用就是返回一个对象或者类型所占的内存字节数。 MSDN 上的解释为: The sizeof keyword gives the amount of storage, in bytes, associated with a variable ora type (including aggregate types). This keyword returns a value of type size_t. 其返回值类型为 size_t , 在头文件 中定义。这是一个依赖于编译系统的值, 一般定义为 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 值都是一致的。这里,对象可以进一步延伸至表达式,即 sizeo f 可以对一个表达式求值, 编译器根据表达式的最终结果类型来确定大小, 一般不会对表达式进行计算。如: sizeof( 2 ); //2 的类型为 int ,所以等价于 sizeof( int ); sizeof( 2+ ); // 的类型为 double ,2 也会被提升成 double 类型,所以等价于 sizef(double) 也可以对一个函数调用求值, 其结果是函数返回类型的大小, 函数并不会被调用, 我们来看一个完整的例子: char foo() { printf("foo() has been called.\n"); return 'a'; } int main() { size_t sz= sizeof( foo() ); // foo() 的返回值类型为 char ,所以 sz= sizeof(char ), foo() 并不会被调用 printf("sizeof( foo() )= %d\n", sz); } C99 标准规定, 函数、不能确定类型的表达式以及位域( bit-field ) 成员不能被计算 sizeo f 值,即下面这些写法都是错误的: sizeof( foo );// error void foo