您的位置:首页 > 编程语言 > C语言/C++

c语言学习--结构体的定义和使用

2018-03-01 13:22 429 查看
一、机构体的定义
1、结构体(struct)是由一系列具有相同类型或不同类型的数据构成的数据集合,叫做结构。

二、定义一个结构的一般形式//
struct 结构名
{
    成员表列
};
//
//
struct stu
{
    int num;
    char name[20];
    char sex;
    float score;
};
//

三、结构类型变量的说明方法
1、方法一:先定义结构,再说明结构变量//
struct stu
{
    int num;
    char name[20];
    char sex;
    float score;
};
struct stu boy1,boy2;
//也可以用宏定义使一个符号常量来表示一个结构类型//
#define STU struct stu
STU
{
    int num;
    char name[20];
    char sex;
    float score;
};
STU boy1,boy2;
//2、方法二:在定义结构类型的同时说明结构变量//
struct stu
{
    int num;
    char name[20];
    char sex;
    float score;
}boy1,boy2;
//即形式如下//
struct 结构名
{
    成员表列
}变量名表列;
//3、方法三:直接说明结构变量//
struct
{
    int num;
    char name[20];
    char sex;
    float score;
}boy1,boy2;
//即形式如下
//
struct
{
    成员表列
}变量名表列;
//
四、结构类型变量的嵌套//
struct date
{
int month;
int day;
int year;
};

struct{
    int num;
    char name[20];
    char sex;
    struct date birthday;
    float score;
}boy1,boy2;
//


五、结构体变量的表示方法
1、表示结构变量成员的一般形式是://
结构变量名.成员名
eg:
boy1.num 即第一个人的学号
boy2.sex 即第二个人的性别
//如果成员本身又是一个结构则必须逐级找到最低级的成员才能使用。
//
eg:
boy1.birthday.month
即第一个人出生的月份成员可以在程序中单独使用,与普通变量完全相同。
//

六、结构体变量的赋值//
main()
{
    struct stu
    {
        int num;
        char *name;
        char sex;
        float score;
    } boy1,boy2;
    boy1.num=102;
    boy1.name="Zhang ping";
    printf("input sex and score\n");
    scanf("%c %f",&boy1.sex,&boy1.score);
    boy2=boy1;
    printf("Number=%d\nName=%s\n",boy2.num,boy2.name);
    printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);
}
//
七、结构体变量的初始化//
main()
{
    struct stu /*定义结构*/
    {
        int num;
        char *name;
        char sex;
        float score;
    }boy2,boy1={102,"Zhang ping",'M',78.5};
    boy2=boy1;
    printf("Number=%d\nName=%s\n",boy2.num,boy2.name);
    printf("Sex=%c\nScore=%f\n",boy2.sex,boy2.score);
}
//
八、结构数组的定义//
struct stu
{
    int num;
    char *name;
    char sex;
    float score;
}boy[5];
//定义了一个结构数组 boy,共有 5 个元素,boy[0]~boy[4]。每个数组元素都具有 struct stu 的结构形式。对结构数组可以作初始化赋值。
//
struct stu
{
    int num;
    char *name;
    char sex;
    float score;
}boy[5]={
        {101,"Li ping","M",45},
        {102,"Zhang ping","M",62.5},
        {103,"He fang","F",92.5},
        {104,"Cheng ling","F",87},
        {105,"Wang ming","M",58};
        }
//
当对全部元素作初始化赋值时,也可不给出数组长度。

//
计算学生的平均成绩和不及格的人数
struct stu
{
    int num;
    char *name;
    char sex;
    float score;
}boy[5]={
        {101,"Li ping",'M',45},
        {102,"Zhang ping",'M',62.5},
        {103,"He fang",'F',92.5},
        {104,"Cheng ling",'F',87},
        {105,"Wang ming",'M',58},
        };
main()
{
    int i,c=0;
    float ave,s=0;
    for(i=0;i<5;i++)
    {
        s+=boy[i].score;
        if(boy[i].score<60) c+=1;
    }
    printf("s=%f\n",s);
    ave=s/5;
    printf("average=%f\ncount=%d\n",ave,c);
}
//


致谢
1、C语言结构体定义的几种方法
2、结构体(百度百科)
3、C程序设计(第四版)[谭浩强]
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: