定义结构体
使用 struct 关键字定义结构体
struct point {int x,y;}
以上定义了一个结构体类型 struct point ,包含了x、y两个int类型变量。
声明结构体变量
1 在定义结构体时,声明结构体变量
struct point {int x,y;} first_point, second_point;
以上声明了类型 struct point 的两个变量 first_point 和 second_point;
指向结构体的指针变量声明:
struct point {int x,y;} *my_point_ptr;
声明了结构体类型 struct point 的一个指针变量 my_point_ptr;
2 在定义结构体之后,声明结构体变量
struct point {int x,y;};struct point first_point, second_point;// 声明该结构体的指针变量struct point *my_point_ptr;
以上同样声明了类型 struct point 的两个变量 first_point 和 second_point;
使用typedef定义结构体类型别名
typedef 语法为数据类型创建别名;语句结构
typedef old-type-name new-type-name
1 给结构体类型 struct point 定义一个别名 point_type
typedef struct point {int x, y;} point_type;
注意,这里的 point_type 是结构体 struct point 的别名,不是结构体 struct point 的变量;
示例
typedef struct color {int x, y;} color_type;// 声明结构体类型color_type的一个变量my_colorcolor_type my_color = {4,5};// 访问结构体成员printf("my_color.x=%d\n", my_color.x);// 声明结构体类型color_type的一个指针变量,并指向my_colorcolor_type *my_color_ptr = &my_color;// 通过指针变量访问my_color的结构体成员printf("my_color_ptr->x=%d\n", my_color_ptr->x);
2 给结构体定义指针类型
// 定义了结构体struct color的两种类型,结构体color_type和指向结构体的指针类型color_ptr_typetypedef struct color {int x, y, z;} color_type, *color_ptr_type;// 声明变量并赋值color_type my_color;my_color.x = 10;color_ptr_type my_color_ptr;my_color_ptr = &color_type;printf("my_color.x=%d\n", my_color->x);printf("sizeof my_color %lu\n", sizeof(my_color));printf("sizeof my_color_ptr %lu\n", sizeof(*my_color_ptr));
上述示例展示了定义结构体指针类型;
typedef struct color {int x, y, z;} *color_ptr_type;
参考:
