结构体

本小妞迷上赌 提交于 2020-03-08 12:16:12

结构体

一、结构体类型与结构体变量的定义
使用结构体表示数据:
1.定义结构体类型
2.定义结构体类型的变量
3.引用结构体变量的各成员变量
相比简单的变量的定义,这一过程需要先自定义结构体类型。
注:
1.结构定义并不预留内存,它只是一个模板
2.结构定义放置在程序的开始部分,位于头文件声明之后。
3结构定义仅描述了一个结构的形式。如果要在程序里使用结构,需要声明结构变量。

定义结构之后,声明变量。
声明变量的形式:
①先定义结构,再声明结构变量:

struct student
{
    int num;
    char name[20];
    float score;
};
struct student
student1,student2;

②在定义结构类型的同时声明结构变量:

struct student
{
    int num;
    char name[20];
    float score;
};
student1,student2;

③直接声明结构变量:

struct
{
    int num;
    char name[20];
    float score;
};
student1,student2;

嵌套结构及引用:
结构体类型的成员也可以是另一个结构体类型

二、结构体类型变量成员的引用
引用结构体类型变量成员的一般形式:
结构体类型变量名.成员名------如:stu1.num
注意:如果结构体成员本身是一个结构类型,则必须逐级找到最低级的成员才能使用。
如:stu1.birthday.month
1.结构体类型变量成员的引用
其中”.“是成员运算符,在所有运算符中优先级最高
2.结构体类型变量的赋值
①赋值是给它的成员赋值
②赋值方式由结构体类型变量成员的数据类型决定
③相同类型的结构体变量可以相互直接赋值。

三、结构体变量的初始化及实例
结构体变量的初始化:
赋值的顺序与成员声明的顺序一样;
允许初始化语句中的值的数目比结构成员数目少

四、结构体类型数组
结构体类型数组:元素为结构体类型的数组
1.结构体数组的定义形式:
①先定义结构,再定义变量
②定义结构的同时定义变量
③如果再定义结构的同时定义了数组,结构的名字可以省略
2.结构体数组的初始化:
实际上是对数组元素的最低层成员赋值。
结构体数组定义和初始化

typedef struct date
{
    int year; 
    int month;
    int day;
}DATE;
typedef struct student
{
    int num; 
    char name[10];
    char sex;
    int age;
    double score[5];
    DATE birthday;
}STUDENT;

**3.结构体数组元素的引用**
int main()
{
    STUDENT stud1[3];//定义结构体STUDENT类型数组stud1
    int i,j;
    for(j=0;j<3;j++)
    {
        scanf("%d",&stud1[j].num);
        scanf("%s",stud1[j]name);
        scanf(" %c",&stud1[j].sex);//%c前面的空格,用来读掉名字后面的换行符
        scanf("%d",&stud1[j].age);
        for(i=0;i<5;i++)
        {
            scanf("%lf",&stud1[j].score[i]);
        }
        scanf("%d %d %d",&stud1[j].birthday.year,&stud1[j].birthday.month,&stud1[j].birthday.day);
        printf("%s \'s birthday:%d年%%d月%d日\n",stud1[j].name,stud1[j].birthday.year,stud1[j].birthday.month,stud1[j].birthday.day);
    }
    return 0;
}

五、结构体类型的指针变量
1.指向结构体变量的指针
①结构体类型指针变量的定义和使用:
如:stuct student *p1,boy;
p1=&boy; //✔
p1=&student;//❌,不能取结构体类型名的地址
②结构体类型指针变量访问结构体类型变量的各个成员
如:(*p1).num或p1->num
2.指向结构体类型数组的指针
①指针变量可以指向一个结构体类型的数组,这时指针变量的值是整个结构体类型数组的首地址。
②结构体类型指针变量也可以指向结构体类型数组的一个元素,这时指针变量的值是该数组元素的首地址。
3.结构体类型指针变量作函数参数

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!