结构体:一系列具有相同类型或不同类型的数据构成的数据集合。
定义:
struct 结构体类型名 结构体变量名
{
成员表列;
};
如:建立学生信息类型的结构体,(包括学号、姓名、性别、年龄)。
struct student st1 { int num; char name[20]; int age; };
成员变量赋值: st1={001,"xiaoming",20}; //聚合体初始化
结构体变量:
struct student st1 //普通结构体变量 { int num; char name[20]; int age; }; struct student *p; //指针结构体变量 p=&st1; st1.num=001; //结构体普通变量通过 "."(结构体成员运算符)访问它的成员 p->num=002; //结构体指针变量通过 "->" (指向结构体成员运算符)访问它的成员
结构体指针:指向结构体的指针。
struct student st1 //普通结构体变量 { int num; char name[20]; int age; struct student *p; //定义一个包含自身的指针 //strucr student st2; 错误!strucr student类型没有定义完成,系统无法分配空间 };
子函数修改父函数结构体的成员变量:
void Fun(struct student *a) { a->num=007; a->name="007"; } int main() { Fun(&st1); }
typedef : 类型定义,给类型其别名,使类型名容易记忆。容易书写。
定义:typedef 类型 其他字符(别名)
typedef unsigned long long int uint64; typedef unsigned long int uint32; typedef int * Pint; typedef struct student { int num; char name[20]; int age; }st1; int main() { uint64 b = 20; //等同于unsigned long long int b = 20; uint32 c = 30; //等同于unsigned long long int b = 20; Pint d; //等同于int *d; student st2; //等同于struct student st2; }
注意:与宏定义的区别。
typedef int * Pint; #define PINT int *//字符替换 int main() { Pint i,j; //typedef int *Pint ; i,j都为int* PINT x,y; //#define PINT int * ; x为int *,y为 int(int*x,y); }