AutoLeaders——C语言结构体学习笔记

C语言提供了一种数据结构,它可以把不同类型数据项(也可以是相同类型数据项)组织成一个整体,这就是结构类型。

目录

一.结构体类型的定义和引用

1.结构体类型的定义和声明

1.1.结构体变量的定义

1.2.声明结构体变量

2.结构体变量的引用与结构体成员的访问

2.1.访问结构体成员

2.2.非指针型结构变量的访问

2.3.指针型结构变量的访问

2.4.结构体嵌套

二.结构与函数

1.在函数内部声明结构体变量

2.通过指针传递结构体变量

3.返回结构体类型的值

三.结构中的结构

1.定义结构中的结构

2.结构体嵌套

3.初始化结构中的结构

四.总结

五.常见错误


一.结构体类型的定义和引用

1.结构体类型的定义和声明

1.1.结构体变量的定义

在C语言中,使用struct关键字来定义结构体。结构体定义通常放在函数外部,作为全局变量或者在函数内部作为局部变量。

struct Person {
    char name[20];
    int age;
    float height;
};

注意:

struct 是关键字,表示一个数据结构,不可省略。

整个结构体的定义必须以分号结尾。

1.2.声明结构体变量

在定义结构体之后,我们可以声明结构体变量来实际使用它。在声明时,我们需要指定结构体的类型和变量名。

struct Person p1;

2.结构体变量的引用与结构体成员的访问

2.1.访问结构体成员

可以使用点运算符”.“来访问结构体的成员。

strcpy(p1.name, "John");
p1.age = 25;
p1.height = 1.75;

2.2.非指针型结构变量的访问

对于非指针型结构变量来说,要通过成员运算符”.“逐个访问其成员。访问的一般格式为:

结构体变量名.成员名

2.3.指针型结构变量的访问

对于指针型结构变量来说,一般是通过"->"运算符来访问其成员,也使用点运算符”.“来访问。访问的一般格式为:

结构体指针->成员名 或(*结构体指针).成员名

2.4.结构体嵌套

如果结构体成员本身又是一个结构体类型,则只能通过多级的分量运算,对最低一级的成员进行引用。

结构体变量名.成员名.子成员名.…….最低子成员名

二.结构与函数

1.在函数内部声明结构体变量

我们可以在函数内部声明结构体变量,就像声明其他变量一样。这种方法允许我们在函数内部创建临时对象并对其进行操作。

2.通过指针传递结构体变量

我们可以通过指针将结构体变量作为参数传递给函数,以便在函数内部修改结构体的值。这种方法比直接传递结构体更高效,并且可以避免大量的内存复制。下面是结构体作为函数参数时的用法:

void printPerson(struct Person p) {
    printf("Name: %s\n", p.name);
    printf("Age: %d\n", p.age);
    printf("Height: %.2f\n", p.height);
}

将结构体作为函数的参数传递,可以通过值传递或引用传递来操作结构体。

3.返回结构体类型的值

我们可以从函数中返回结构体类型的值。可以使用return语句返回结构体对象,并在函数调用处将其分配给另一个结构体变量。

三.结构中的结构

1.定义结构中的结构

在定义结构中的结构时,我们需要在内部结构体声明之前先声明外部结构体。这是因为内部结构体可能会引用外部结构体。

2.结构体嵌套

在结构体中,我们可以包含其他结构体作为成员,从而创建嵌套结构体。

struct Date {
    int day;
    int month;
    int year;
};

struct Student {
    char name[20];
    struct Date dob;
};

3.初始化结构中的结构

我们可以通过嵌套的方式初始化结构中的结构。可以使用大括号来分别初始化每个结构体对象。

四.总结

结构体是一个强大的工具,可用于组织和管理复杂的数据。通过灵活运用结构体,我们能够更好地组织和操作数据,使程序更加模块化和可读性更高。

五.常见错误

1.定义结构体时,在}右边漏掉了";"。

2.把复杂数据类型名当作变量名。

3.定义复杂数据类型时为成员变量赋初始值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值