开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 7 天,点击查看活动详情。
一、概述
- 数组:描述一组具有相同类型数据的有序集合,用于处理大量相同类型的数据运算。 有时候我们需要将不同类型的数据组合成一个有机的整体,比如:一个学生有学号、姓名、性别、年龄、分数、地址等属性,显然单独定义以上变量比较繁琐,数据不便于管理。恰好,C语言中给出了另一种构造数据类型——结构体;在其他一些高级语言中称其为“记录”。
二、结构体变量的定义与初始化
1、定义结构体变量方式:
-
先声明结构体类型再定义变量名;
-
在声明类型的同时定义变量;
-
直接定义结构体类型变量(无类型名)
2、结构体类型和结构体变量关系
-
结构体类型:指定了一个结构体类型,它相当于一个模型,但其中并无具体数据。系统对之也不分配实际内存单元。
-
结构体变量:系统根据结构体类型(内部成员状况)为之分配空间。
示例代码如下
#define _CRT_SECURE_NO_WARNINGS
#include<stdio.h>
#include<string.h>
#include<stdlib.h>
#include<math.h>
#include<time.h>
//struct 结构体名
//{
// 结构体成员列表
// 姓名
// 年龄
// 成绩
//}
struct student
{
char name[21];
int age;
int score;
char addr[51];
};//stu = { "张三",18,100,"北京市昌平区北清路22号" };
int main0201()
{
//创建结构体变量
//结构体类型 结构体变量
//struct student stu;
////stu.name = "张三";
//strcpy(stu.name, "张三");
//stu.age = 18;
//stu.score = 100;
//strcpy(stu.addr, "北京市昌平区北清路22号");
struct student stu = { "张三",18,100,"北京市昌平区北清路22号" };
printf("姓名:%s\n", stu.name);
printf("年龄:%d\n", stu.age);
printf("成绩:%d\n", stu.score);
printf("地址:%s\n", stu.addr);
return EXIT_SUCCESS;
}
int main0203(void)
{
struct student stu;
scanf("%s%d%d%s", stu.name, &stu.age, &stu.score, stu.addr);
printf("姓名:%s\n", stu.name);
printf("年龄:%d\n", stu.age);
printf("成绩:%d\n", stu.score);
printf("地址:%s\n", stu.addr);
return 0;
}
三、结构体数组
1、定义结构体数组的一般形式
(1)struct结构名
{成员表列} 数组名[数组长度];
(2)先声明一个结构体类型,然后再用此类型定义结构体数组
结构体类型 数组名[数组长度];
2、对结构体数组初始化的形式是在定义数组的后面加上
={初值表列};
示例程序
struct Student Person[2] = {"si",0,"sun",0};