数组(Array),它是一组具有相同类型的数据的集合。但在实际的编程过程中,我们往往还需要一组类型不同的数据,例如对于学生信息登记表,姓名为字符串,学号为整数,年龄为整数...因为数据类型不同,显然不能用一个数组来存放。
结构体可自定义数据类型,类似int, long, 当结构体定义完成,就可以像用内置类型一样的使用
结构体普通变量通过"·"访问其成员 结构体指针变量通过"->"访问其成员在C语言中,可以使用结构体(Struct)来存放一组不同类型的数据。结构体的定义形式为:
struct Student { char name[20]; int age; }student;如此定义有一个小缺点,在使用结构体定义变量时,总需要加上关键字struct,如
struct Student stu = {"liubei",23};
对于这个问题我们可以通过使用typedef来解决。
类型定义 typedef 旧类型名 新类型名(别名)
小技巧: 首先去掉typedef,确定是定义一个什么变量,然后加上typedef,其就由变量提升成为数据类型
typedef unsigned long long int uint64;//64位 typedef int Arr[10];//定义一个长度为十的整型数组的类型 typedef int * Pint;//整形指针 类型 typedef int (*P)[4];//指针指向一个一维数组 的类型如上面的学生信息结构体,我们可以在结构体定义前加上typedef struct Student Student;
但将二者合二为一是更好的办法:
typedef struct Student { char name[20]; int age; struct Date bir;//结构体嵌套 }student; typedef struct Date { int year; int mon; int day; }Date;以后可以不再用struct,如
Student stu = {"liubei",23};
stu.bir.year = 1990;
Student *ps = &stu;
通过ps改成5月3日 ps->bir.mon = 5; ps->bir.day = 3;
Student arr[] = {{"liubei",23},{"sunquan",18},{"caocao",24}};
