1.为什么要有结构体
(1)之前int、char等类型描述的结构体非常单一,只可描述一种类型。 (2)数组也是描述同一类型的集合,只可描述一种类型。 (3)而结构体使得C语言可以描述复杂类型,比如学生类型( 包含学生的名字、年龄、性别、电话号等信息)。
结构体和数组的区别: ·结构体:用来描述相同/不同数据元素类型的集合。 ·数组:用来描述具有相同数据元素类型的集合。
2.结构体的定义
2.1结构体类型的定义
格式:
struct Stu
{
char Name[20];
int Age;
char Sex[5];
char Tel[12];
};
注意: (1)结构体类型的定义是在main函数外部。 (2)此处指定义了一个结构体类型,还未定义对应结构类型的变量,所以还未在内存中开辟空间。
2.2定义结构体普通变量及访问
struct Stu Tom = { “Tom”, 13, “男”, “11122546698” }; //定义结构体普通变量并初始化,变量名为Tom,用变量名访问结构体。
#include <stdio.h>
struct Stu
{
char Name[20];
int Age;
char Sex[5];
char Tel[12];
};
int main()
{
struct Stu Tom = { "Tom", 13, "男", "11122546698" };
printf("%s,%d,%s,%s\n", Tom.Name, Tom.Age, Tom.Sex, Tom.Tel);
return 0;
}
2.3定义结构体指针变量及访问
struct Stu *s = &Tom; //定义结构体指针变量,s指向Tom,有如下两种访问方式。
#include <stdio.h>
struct Stu
{
char Name[20];
int Age;
char Sex[5];
char Tel[12];
};
int main()
{
struct Stu Tom = { "Tom", 13, "男", "11122546698" };
struct Stu *s = &Tom;
printf("%s,%d,%s,%s\n", s->Name, s->Age, s->Sex, s->Tel);
printf("%s,%d,%s,%s\n", (*s).Name, (*s).Age, (*s).Sex, (*s).Tel);
return 0;
}
|