结构体相关知识1

目前已学的数据类型:数组(1、所有数据的类型必须一致   2、访问数组的成员必须通过下标)

学籍管理系统:学生(姓名、学号、性别、年龄、成绩...)

飞机票订票系统:机票(订票时间、班号、起点、终点...)

酒店订票系统:房间 (预定时间、房号、位置...)

C语言的内置类型:bool、char、short 、int、long、long long、float 、double、long double

1、C语言为什么需要结构题?

是为了描述复杂个体,只用基础的内置类型不能完整的表述。

2、如何去定义结构题?

结构体定义好之后,它就和内置类型没有区分

struct +结构体名//struct在C语言中不能丢,C++可以

{
      成员列表;

};

struct Student
{
	char name[20];//名字、容纳10个汉字
	int id;//学号
	char sex;//性别  1男0女
	int age;//年龄
	int score;//总成绩
};
int main()
{
struct Student stu_arr[10];
    struct Student stu_brr[10] = { "caocoa",12345,1,30,88,"liubei",23456,1,35,85 };//只初始化了前两个结构体
    int len = sizeof(stu_brr) / sizeof(stu_brr[0]);//求长度
    for (int i = 0; i < len; i++)
    {
        printf("%s", stu_brr[i].name);
        printf("%d", stu_brr[i].id);
        if (stu_brr[i].sex==0)
        {
            printf("男");
        }
        else
        {
            printf("女");
        }
        printf("%d", stu_brr[i].id);
        printf("%d\n", stu_brr[i].score);
    }
}

struct Student stu1={ "caocao",12345,1,30,88 };//给了结构体初始值,对应姓名、学号、性别、年龄、总成绩
struct Student stu2 = { "caocao" };//只赋值一部分,其他部分默认为0 

struct Student stu3;//不初始化都是随机值
struct Student* stup = &stu1;//stu1的地址
struct Student* stup;//指向随机值

struct A
{
    int a;
    int b;
};
struct B
{
    int a;//数据域
    struct A b;//嵌入结构体
    struct B* b;//自嵌时只能是指针变量,因为知道空间大小    指针域
};

3、如何使用结构体?

3.1结构体普通变量怎么访问其成员

C语言规定,结构体的普通成员可以用过 ‘ .  ’ 来访问

struct Student
{
    char name[20];//名字、容纳10个汉字
    int id;//学号
    char sex;//性别  1男0女
    int age;//年龄
    int score;//总成绩
};
int main()
{
    struct Student stu1 = { "caocoa",12345,1,30,88 };
    struct Student stu2 = { "liubei", 23456,1,35,85 };
    struct Student stu3 = { "sunquan", 23457,1,18,87};
    //打印 struct Student stu1的信息
    printf("%s ", stu1.name);
    printf("%d ", stu1.id);
    printf("%d ", stu1.sex);
    printf("%d ", stu1.age);
    printf("%d\n", stu1.score);
    stu1.id = 678989;//修改stu1的学号
    //stu1.id = "caopi";结构体成员是字符串,不能直接用=修改
    strcpy_s(stu1.name, "caopi");//修改名字,用 strcpy函数
    printf("%s ", stu1.name);
    printf("%d ", stu1.id);
    printf("%d ", stu1.sex);
    printf("%d ", stu1.age);
    printf("%d\n", stu1.score);
}

3.2结构体指针变量怎么访问其成员:可以通过->方式访问

系统简化:(*p).name==p->name

struct Student
{
    char name[20];//名字、容纳10个汉字
    int id;//学号
    char sex;//性别  1男0女
    int age;//年龄
    int score;//总成绩
};
int main()
{
    struct Student stu1 = { "caocoa",12345,1,30,88 };
    struct Student stu2 = { "liubei", 23456,1,35,85 };
    struct Student stu3 = { "sunquan", 23457,1,18,87};
    struct Student* p = &stu3;//指针指向stu3地址
    (*p).id = 76543;//利用指针修改stu3的学号
    p->sex = 0;//修改性别
    strcpy_s((*p).name, "sunjian");
     //(*p).name==p->name
    //printf("%s ", (*p).name);
    printf("%s ", p->name);
    printf("%d ", p->id);
    printf("%d ", p->sex);
    printf("%d ", p->age);
    printf("%d\n", p->score);
}

上一篇:今日内容


下一篇:jquery基础