C语言中结构体变量占用空间影响因素分析.pdfVIP

  • 0
  • 0
  • 约小于1千字
  • 约 1页
  • 2026-02-03 发布于四川
  • 举报

C语言中结构体变量占用空间影响因素分析.pdf

结构体是C语言中的一种常用的自定义数据结构。

看下面的例子:

1.#includestdio.h

2.

3.intmain(void)

4.{

5.structtest

6.{

7.inta;

8.charb;

9.}i;

10.printf(%d\n,sizeof(i));

11.}

按理说结构体变量i的大小应该是sizeof(int)+sizeof(char),即5,而输出显示的结果为8。再看一个例子:

1.#includestdio.h

2.

3.intmain(void)

4.{

5.structtest

6.{

7.inta;

8.charb,c;

9.}i;

10.printf(%d\n,sizeof(i));

11.}

应该是6对吧?结果还是8.这是为什么呢?

这是因为在32位的操作系统上,操作系统组织数据是以32位(4个字节)作为一个标准,因此各种变量的

size都一般都是4的倍数。而且结构体数据都是按照定义时所使用的顺序存放的,因此在第一个例子中尽

管b变量只会占有一个字节,但是a+b=54,因此第一个4个字节存放a,第二个4个字节用于存放

b,这样实际上就浪费了3个字节。在第二个例子中第二个4个字节用来存放b和c。

所以,在结构体中要注意结构体中的变量定义的顺序,不同的顺序可能会造成占用空间的不同。这在嵌入

式程序设计等系统资源比较少的情况下尤为重要。比如如下两种结构体:

1.#includestdio.h

文档评论(0)

1亿VIP精品文档

相关文档