结构体 枚举 共用体

来源:互联网 发布:企业网络管理培训 编辑:程序博客网 时间:2024/06/04 19:45

    C的纯数据类型是char  int  float 像是数组属于聚合数据类型,C的聚合数据类型主要有两种,数组和结构。数组是相同类型的数据结合,结构式可以允许不同类型数据结合。数组是通过下标访问的,而结构是通过名字访问的。

常用的定义方式。

1、先定义结构体类型,再定义结构体类型变量

struct 结构名

{

成员表列

};

2、定义结构体类型同时定义结构体类型变量

struct 结构名

{

成员表列

} 类型名 ;

3、直接定义结构体类型变量

struct

{

成员表列

}结构体类型变量;


还有一种就是通过 typedef 做一个类型。

4、

typedef  struct 结构名

{

成员表列

} 类型名 ;


代码

#include <stdio.h>struct student{char name[10];int  age;};typedef struct teacher{char name[10];int  age;}tea;int main(void){    struct student li = {"xiaoli", 16};tea zhang = {"mr zhang", 30};printf("李学生的名字%s,年龄%d\n", li.name, li.age);printf("张老师的名字%s,年龄%d\n", zhang.name, zhang.age);return 0;}

执行结构


还有一种叫枚举

有的变量只有几种可能取值。

定义一个变量是枚举类型,可以先定义一个枚举类型名,然后再说明这个变量是该枚举类型。

例如: 

enum weekday{sun,mon,tue,wed,thu,fri,sat}; 

定义了一个枚举类型名 enum weekday,然后定义变量为该枚举类型。例如: 

enum weekday day; 

也可以在定义的时候赋值

代码

#include <stdio.h>enum weekday{sun=7, mon=1, tue=2, wed=3, thu=4, fri=5, sat=6}; int main(void){printf("星期天的代码是%d\n", sun);printf("星期一的代码是%d\n", mon);printf("星期二的代码是%d\n", tue);printf("星期三的代码是%d\n", wed);printf("星期四的代码是%d\n", thu);printf("星期无的代码是%d\n", fri);printf("星期六的代码是%d\n", sat);return 0;}

执行效果


共用体也叫联合,声明和结构类似,意思是引用相同内存空间的相同位置。你可以把不同的东西存在同一个位置。

union

{

    类型定义  变量;

    类型定义  变量;

}枚举名;

代码

#include <stdio.h>union {char str1[2][2];    char str2[4];}num;int main(void){int i, j; printf("num占的空间%d\n", sizeof(num));  for(i=0; i<4; i++){num.str2[i] = i;}for(i=0; i<2; i++)for(j=0; j<2; j++)printf("数据是%d\n", num.str1[i][j]); return 0;}


执行结果


0 0