C:笔记:枚举 结构 联合

枚举

如果程序中需要用到一些固定的数字,这些数字被称为 magic number,这些数字经常用字符来替代。

比如,定义颜色:

const int red = 0;

const int yellow = 0;

const int green = 0;

更好的方式是使用枚举类型来定义,取代上面分别独立的const int 变量。

enum COLOR{RED, YELLOW, GREEN};//RED=0,YELLOW=1,GREEN=2

enum COLOR作为一个类型声明的前缀:

enum COLOR t;//t就是一个枚举类型变量,类型是enum COLOR,在C语言中,enum不可以省略。

枚举,只能是int ,枚举量默认从0开始,也可以指定枚举类型里面每一个量的值大小。

(C语言里的枚举类型很少用,因为不好用)

结构

struct 关键字{}后面要有分号;

//声明一个结构:
//第一种方式:
struct date{
    int month;
    int day;
    int year;
};
//第二种方式:
struct {
    int month;
    int day;
    int year;
}today;//定义一个结构,这个结构没有名字,但是有一个名为today的变量。
//第三种方式就是混合和前两种方式,既有结构名,也有变量名。

struct date today;//定义一个名为today的date类型结构变量。
today = (struct date){12,05,2015};//初始化today
today = {.month = 12, .year = 2015};//这样也是可以的。
today.month = 12;//这样也可以。
today1 = today2;//结构可以直接互相赋值,数组不可以这样。

数组变量名就是变量地址,但是结构不是这样,必须使用&才能取到地址值。

结构变量在函数内作为参数传递时,传递的是值,不是变量,也就是说,在函数内新建了一个结构变量。

->符号:指针所指的结构变量中的成员

struct date *p = &today;
(*p).month = 12;
p->month = 12;//这两句是等价的。
//->指向符号只能用在结构指针的后面。

数组类型也可以是自定义的结构类型:

struct date today[2] = {{12,05,2015},{10,01,2016}};//定义一个date结构类型的数组。

today[0].day = 5;//用索引号和点来引用数组里面某个结构的成员变量。


联合

typedef

typedef:自定义数据类型

typedef int Length;//length 就成了int的别名。

typedef struct ADate{

    int month;

    int day;

    int year;

} Date;

//Date 就代表了typedef 和Date之间的那些东西。

Date a = {12, 5, 2015};//使用typedef后,这一句相当于下面那句。即,以后,不用每次声明一个新的结构变量的时候都带着 struct。

struct ADate a = {12, 5, 2015};

union 

union Test{

    int i;

    char c;

} test1, test2;

sizeof(union Test);//结果是sizeof(每一个成员)的最大值。

//对union来说,所有成员变量使用同一个内存空间。

//同一时间只有一个成员是有效的。

转载于:https://my.oschina.net/zkg/blog/548649

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值