在C语言中,结构体(struct)是一种复合数据类型,它允许我们将多个不同类型的变量组合成一个单一的实体。在本章中,我们将探讨如何创建、访问和操作结构体。 创建结构体的关键字是`typedef`,它可以定义一个新的数据类型。例如,我们定义了一个名为`student`的结构体,包含学生ID、姓名、性别、生日和四门课程的成绩。定义如下: ```c typedef struct student { long studentID; char studentName[10]; char studentSex; DATE birthday; int score[4]; } STUDENT; ``` 这里的`DATE`假设是一个包含年、月、日的结构体。创建结构体变量时,可以使用以下语法: ```c STUDENT stu1 = {100310121, "王刚", 'M', {1991, 5, 19}, {72, 83, 90, 82}}; ``` 访问结构体成员通常使用成员选择运算符(圆点运算符 `. `)。例如,要设置`stu1`的性别为'M',应写为`stu1.studentSex = 'M';`。但是,字符串成员(如`studentName`)需要使用`strcpy`函数来赋值,因为它们是字符数组,而不是简单的字符变量。 结构体变量间的赋值不能像基本数据类型那样直接使用等号(`=`),而需要逐个成员地复制。例如: ```c STUDENT stu2; stu2 = stu1; // 错误,不能这样赋值 ``` 正确的方法是: ```c stu2.studentID = stu1.studentID; strcpy(stu2.studentName, stu1.studentName); stu2.studentSex = stu1.studentSex; stu2.birthday.year = stu1.birthday.year; // ... 继续复制其他成员 ``` 结构体变量的地址是其占用内存的起始位置,可以通过取地址运算符`&`获取。结构体成员的地址则与成员在结构体中的相对位置和大小有关。因此,结构体变量的地址和成员的地址是不同的。 需要注意的是,不能使用`==`或`!=`来比较两个结构体是否相等,因为这将比较它们的内存地址,而不是内容。如果要比较结构体内容,必须逐个成员进行比较。 结构体可以用来封装数组,如`ARRAY`结构体的例子所示,这样可以方便地复制整个数组。然而,结构体变量之间的整体赋值不适用于判断相等性,因此在编写代码时,需特别注意这一点。 在编程练习中,可能需要使用格式化输出功能,例如`%02d`,这个格式指定输出的数字至少要有两位,并且不足两位时在左侧填充零。利用这个特性,我们可以输出结构体成员,使得输出更加规整。例如,输出学生ID、成绩等信息时,可以确保数字始终是两位,即使个位数为0,也不会省略。
剩余7页未读,继续阅读
- 粉丝: 24
- 资源: 304
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
评论0