技术心得地

把所有简单的事办好即为不简单

C++博客 首页 新随笔 联系 聚合 管理
  17 Posts :: 0 Stories :: 0 Comments :: 0 Trackbacks
1. 聚合类型

结构和联合
结构 : 标量类型(内置类型)
struct tag { member-list } var-list;

下面是2个不同的结构:
struct{
    
int   a;
    
char  b;
    
float c;
} x;

struct{
    
int   a;
    
char  b;
    
float c;
} y;

typedef 用法:
typedef struct MyStruct_Tag {
    
int    a;
    
char   b;
    
float  c;
} MyStruct

直接访问 :  结构名.成员名
间接访问 :  结构指针->成员名

不完整声明 : 类似函数声明
struct B;

struct A {
    
struct B  *partner;
}

struct B {
    
struct A  *partner;
}

初始化 : 
typedef struct {
    
int    a;
    
char   b;
    
float  c;
} Simple;

struct INIT_EX {
    
int    a;
    
short  b[6];
    Simple c;
} x 
= { 10, {1,2,3,4,5,6}, {12'x'6.9} };

2. 结构的存储分配

满足边界对齐要求:
结构的起始存储位置必须是结构中边界要求最严格数据类型所要求的位置
结构的成员存储位置必须满足各自的存储要求

求偏移量函数:
offsetof ( type, member ); //stddef.h

3. 作为函数参数

值     : 结构的一份拷贝
指针 : 地址的一份拷贝

4. 位段

struct CHAR {
    unsigned  ch      : 
7;
    unsigned  font    : 
6;
    unsigned  size    : 
13;
}

5. 联合

所有成员引用的是内存中的相同位置
长度是最长成员的长度

初始化:必须是联合第一个成员的类型
union {
    
int    a;
    
float  b;
    
char   c[4];
} x 
= { 6 };

posted on 2010-01-07 22:42 海涛 阅读(179) 评论(0)  编辑 收藏 引用 所属分类: POINTERS ON C

只有注册用户登录后才能发表评论。
网站导航: 博客园   IT新闻   BlogJava   知识库   博问   管理