目录
enum:基本类型
定义枚举:
enum 枚举类型名(不能省略){
成员1,
成员2,
.......
};
typedef enum 枚举类型名(可以省略){
成员1,
成员2,
.......
}新的枚举类型别名;
定义枚举:
enum {
成员1,
成员2,
.......
}变量名;//定义的同时定义了一个变量,这种用法只能定义一个变量,就是次变量
枚举成员都是一个常量,默认第一个是0,后边的成员依次加1
也可以给成员赋一个值,后边依次加1
枚举成员可以直接使用
union:构造类型
共用体可以包含多个不同类型的变量,这些变量公用一块内存空间,现在不怎么使用。
union 共用体名{
int a
char *p;
........
};
typedef union 共用体名(可以省略){
int a
char *p;
........
}新的共用体类型;
新的共用体类型 共用体变量名;
声明共用体时不分配内存空间,定义共用体类型的变量时才会分配空间
普通共用体变量访问共同体成员:
新的共用体类型 共用体变量名
共用体变量名.成员名
指针共用体变量访问共同体成员:
新的共用体类型 *共用体指针变量名 = &共用体变量名
共用体变量名->成员名
#include<stdio.h>
typedef union {
int a;
char arr[4];
} union_t;
typedef union{
int a;
char arr[4];
}union__t;
int main(int argc, const char *argv[])
{
union_t bili;
bili.a = 0x12345678;
for(int i = 0;i < 4;i++){
printf("%p\t%#x\n",&bili.arr[i],bili.arr[i]);
}
putchar(10);
union__t *p = &bili;
p->a = 0x12345678;
for(int i = 0;i < 4;i++){
printf("%p\t%#x\n",&p->arr[i],p->arr[i]);
}
return 0;
}