首页 > 其他 > 详细

struct, union

时间:2014-03-03 16:59:39      阅读:578      评论:0      收藏:0      [点我收藏+]
一、struct

1、定义结构体和结构体变量
struct Point {
    int x;
    int y;
};
struct Point pt;

struct Rect {
    struct Point pt1;
    struct Point pt2;
}
struct Rect screen;

Point和Rect被称为结构标记。

2、赋值结构体(两种方式)
struct Point pt = {0, 20};

struct Point pt;
pt.x = 0;
pt.y = 20;

二、union

1、定义联合结构体
(1) union中可以定义多个成员,但是union内所有的成员共享同一块内存,一次只能使用其中的一个成员。
(2) 对某一个成员赋值,会覆盖其他成员的值(因为所有成员都共享同一块内存)。
(3) union的成员的存放顺序是所有成员都从低地址开始存放的。

union u_tag {
    int ival;
    float fval;
    char *sval;
};
union u_tag u;
该联合体变量可以是int,float,char*中的任何一个。

2、联合体的作用
可以使用union判断大小端模式。

#include <stdio.h>

int main() {
     union Endian {
          int uValue;
          unsigned char str[4];
     };

     union Endian littleEndian;
     littleEndian.uValue = 0x12345678;
     if (littleEndian.str[0] == 0x12){
          printf("Big Endian!\n");
     }else {
          printf("Little Endian!\n");
     }

     return 0;
}


三、位字段

在存储空间有限的情况下,有可能需要将多个对象保存在同一个机器字中。这种使用方式就是位字段。

#define KEYWORD  01
#define EXTERNAL 02
#define STATIC        04

或 enum {KEYWORD = 01, EXTERNAL = 02, STATIC = 04};

为了节省空间,则需要定义位字段

struct Flag {
    unsigned int is_keyword : 1;
    unsigned int is_extern  : 1;
    unsigned int is_static  : 1;
};


本人现经营一个微信订阅号如下:欢迎大家关注,获取相关内容。
订阅号账号是:begginghard_zgh

订阅号名称是:读书笔记 By 张光辉

bubuko.com,布布扣

struct, union,布布扣,bubuko.com

struct, union

原文:http://blog.csdn.net/begginghard/article/details/20299539

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!