一、引子

上面我们已经讲过了结构体,结构体是说我们定义了一个结构体,这个结构体可以由不同的数据组合,然后每一个变量都有一定的内存地址。然后现在有另外一种数据结构,它允许在相同的内存位置存储不同的数据类型。然后可以定义一个带有多成员的共用体,但是任何时候只能有一个成员带有值。共用体提供了一种使用相同的内存位置的有效方式。

二、如何定义共用体

union book
{
floatprice;intnumber;char _name[20];
}store;

三、共用体的实例

union book
{
floatprice;intnumber;char _name[20];
}store;
store.number
= 12;
strcpy(store._name,
"happy");
printf(
"please output the size of store:%d\n", sizeof(store));
printf(
"please output the value of strore._name:%s\n", store._name);
printf(
"please output the value of strore.number:%d\n", store.number);

输出:

please output the size of store:20please output the value of strore._name:happy
please output the value of strore.number:
1886413160

同一时间只用一个成员,这是造成第三个输出结果的原因。

下面提一下typedef

typedef是一种我们可以用来对类型取一个新的名字的关键字,举个例子:

    typedef intAll_Number;
All_Number i
= 12;
printf(
"i=%d\n", i);return 0;

输出

i=12

它和define 的区别:

1、typedef仅限于为类型定义符号名称,#define不仅可以为类型定义别名,也能为数值定义别名,比如将2定义为true

2、typedef是由编译器执行解释的,#define语句是由预编译器进行处理的。

标签: none

添加新评论