结构体#

"基本语法"
struct Books {
    int data;
   ...
}book1={value1,value2,value3};

struct {
    int data;
   ...
}book1;
book1.data=value;

"book1:原地新建的实例(也可后续新建),可以有多个, 也可原地初始化"
"Books:结构体的名称,可以是任意的标识符"
"若Books省略,必须有原地实例book1"

访问成员方式#

变量访问:book.data,传参printbook(book1),定义void printbook(struct Books book)
指针访问:book->data,传参printbook(&book1),定义void printbook(struct Books* book)

typedef#

typedef int INT;
INT a=10;

typedef struct tag_name {
    char title[50];
    char author[50];
    int price;
} Book;
Book book1={"C 程序设计", "Runoob", 50};

"Book:typedef后的新类型名,可以用来定义变量"
"tag_name可省略"

共用体#

共用体所有成员共享同一段内存空间,其大小等于最大成员大小,任意时刻,共用体只能存放其中一个成员的值

union Data{
    int a;
    float b;
    char c;
}data; //data实例

typedef union unionData{
    int a;
    float b;
    char c;
}Data; //Data类型

"共用体与结构体 类型定义方式、访问方式完全一样(data.a  data->a)"

枚举类型#

枚举类型通常用于为程序中的一组相关的常量取名字,以便于程序的可读性和维护性

enum DAY {
    MON,TUE=2,WED,THU,FRI,SAT,SUN
}day; //day为实例

typed enum DAY{
    MON=1,THE,WED,THU,FRI,SAT,SUN
}Day; //DAY为枚举类型

day=WED; // day=3
printf("%d",THE); //打印出2

"成员中部分赋值,则按次序填充;无赋值,则从零开始"
"枚举类型与结构体 类型定义方式完全一样,但为常量,无需访问修改成员变量之说"

数组#

double data[]

float data1[][][]

字符串#

char site[7] = {'R','U','N','O','O','B','\0'} // '\0'为NULL空字符
char sit[] = "RUNOOB";

"C语言中,字符串是以'\0'结尾的一维字符数组,C编译器会自动填充'\0' "