首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

Sizeof()用法介绍

Sizeof()用法介绍

Sizeof 运算符返回其操作数占用空间的大小,以字节为单位。注意,C 定义字节的大小为 Char 类型的大小。Char 通常是 8 位(Bit)的,当然也可以更大。操作数可以是特定的数据对象(例如变量),也可以是一种类型,例如 Int、Double。当操作数是一种类型时,必须使用括号把操作数括起来。

        #Include <Stdio.H>

        Int Main(Void)

        {

            Int Ival = 100;




            Printf( "%Zu, %Zu, %Zu
", Sizeof(Int), Sizeof Ival, Sizeof(3.14) );

            /* %Zu 是 C99 新增的,如果您的编译器不支持,请用以下语句 */

            /* Printf( "%Lu, %Lu, %Lu
",

                       (Unsigned Long)Sizeof(Int), (Unsigned Long)Sizeof Ival,

                       (Unsigned Long)Sizeof(3.14) ); */

            Return 0;

        }

使用 Gcc 编译运行上述程序得到的输出为 4, 4, 8 ,这说明我的电脑中,Int 是 4 字节的,Double 是 8 字节的。也就是说,Int 类型的数据对象占用 4 字节空间;Double 类型的数据对象占用 8 字节空间。当然,在不同的系统编译运行此程序会得到不同的输出。Sizeof(3.14) 也可以写成 Sizeof 3.14 ,因为 3.14 是数据对象,数据对象作为操作数时,可以不用括号。(Unsigned Long) 的作用是把 Sizeof 的返回值强制转换成 Unsigned Long 类型的值。以后我们会详细讲述。

    Sizeof 的返回值为 Size_t类型。Size_t 定义于头文件Stddef.H,它是机器特定(Machine-Specific)的无符号整数类型,标准保证它足以用来表示内存中任何对象的大小。Size_t 可能是 Unsigned Int,也可能是 Unsigned Long 或者别的无符号整数类型。

    Size_t 是利用 C 的 Typedef 机制定义的。我们可以用 Typedef 为已有的类型创建别名(Alias)。例如:

        Typedef Unsigned Long My_size_t;

上述语句为 Unsigned Long 创建了一个别名——My_size_t。创建别名后,我们就可以用这个别名声明无符号长整型变量:

        My_size_t Ul_val;

C99 提供 %Zu用于输出 Size_t 类型的值。如果您的编译器不支持,可以改用 %Lu,同时也要把 Sizeof 的返回值转换成 Unsigned Long 类型的。
返回列表