结构体#
"基本语法"
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' "