Chinaunix首页 | 论坛 | 博客
  • 博客访问: 444609
  • 博文数量: 72
  • 博客积分: 3186
  • 博客等级: 中校
  • 技术积分: 1039
  • 用 户 组: 普通用户
  • 注册时间: 2009-03-07 16:53
文章分类

全部博文(72)

文章存档

2012年(1)

2011年(5)

2010年(10)

2009年(56)

我的朋友

分类: C/C++

2009-03-16 14:03:48

 

这里不谈论其所构成的数据结构,只谈为其所分配的内存空间。

因为前几天的笔试好像给做错了,回想起来,基本功太不扎实了。

struct结构体类型分配内存:各成员所占内存之和,相加即可。

union共用体类型型分配内存:各成员的起始地址相同,分配的内存长度为其中占内存最大的成员所占空间。

在pc机上验证如下:

#include <stdio.h>
struct test
{int i;
 char j;
 float k;
};
void main()
{
    struct test a;
    printf("%d\n",sizeof(a));
    getch();
}

结果为:7

 

 

#include <stdio.h>
struct test
{int i;
 char j;
 float k;
 union
 {
    int l;
    float m;
 }test1;
};
void main()
{
    struct test a;
    printf("%d\n",sizeof(a));
    getch();
}

结果为:11

 

共用体:几种不同类型的变量放到同一段内存单元,使用覆盖技术,几个变量互相覆盖。即共用同一段内存。

注:

1.一瞬时只能存放成员中的一种,每瞬间只有一个成员起作用,其他成员不起作用。即各成员不是同时存在的。

2.起作用的成员是最后一次存放的成员。

不能对共用体变量赋值。不能在定义时初始化,不能作为函数参数。只可以使用共用体指针。

具体还没有使用过union,见到的也不多。记在这里,以后见到就不陌生了。

阅读(1144) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~