十三、结构类型(5)——联合

自定义类型(typedef)

(1)C语言提供了一个叫做typedef的功能来声明一个已有的数据类型的新名字。比如:

typedef  int  Length;    

使得Length成为int 类型的别名。

(2)这样,Length这个名字就可以代替 int 出现在变量定义和参数声明的地方了:

Length  a,b,len;
Length  numbers[10];
Typedef

声明新的类型的名字

——新的名字是某种类型的别名

——改善了程序的可读性

typedef long int64_t;  //重载已有类型的名字,新名字的含义更清晰,具有可移植性

int64_t  i=1000000000; 
typedef struct ADate{
    int month;
    int day;
    int year;
} Date;  //简化了复杂的名字 
typedef int Length;  //Length就等价于int类型
typedef *char[10] String;  //String是10个字符串的数组的类型
typedef struct node{
    int data;
    struct node *next;
} aNode;     //这样用aNode就可以代替struct node 

typedef struct  node aNode;  //这样用aNode就可以代替struct node 

 

联合
union AnElt{
    int i;
    char c;
} elt1,elt2;

elt.i=4;
elt2.c='a';
elt2.i=0xDEADBEEF 

(1)存储

——所有的成员共享一个空间

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

——union的大小是其最大的成员

(2)初始化

——对第一个成员做初始化

union自己并不知道当时其中哪个成员是有效的
程序怎么知道当时elt1和elt2里面到底是int 还是 char?

最好的答案:另一个变量来表达这个事情。

union的用处
#include<stdio.h>

typedef union{
    int i;
    char ch[sizeof(int)];
}CHI; 

int main()
{
    CHI chi;
    int i;
    chi.i=1234;
    for(i=0;i<sizeof(int);i++)
    {
        printf("%02hhX",chi.ch[i]);
    }
    
    return 0;
}

这个结果表明我们所用的CPU是小端的。

 

转载于:https://www.cnblogs.com/Strugglinggirl/p/9080200.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值