C语言结构体数组的定义、初始化和使用

您所在的位置:网站首页 数组的初始化 C语言结构体数组的定义、初始化和使用

C语言结构体数组的定义、初始化和使用

2023-02-28 01:10| 来源: 网络整理| 查看: 265

数组是一组具有相同数据类型变量的有序集合,可以通过下标获得其中的任意一个元素。结构体类型数组与基本类型数组的定义与引用规则是相同的,区别在于结构体数组中的所有元素均为结构体变量。本文我们介绍C语言结构体数组的定义、初始化以及使用。 C语言结构体数组的定义 结构体数组的定义和结构体变量的定义一样,有以下 3 种方式。 1) 先定义结构体类型,再定义结构体数组。

struct 结构体标识符 {   数据类型1 成员名1;   数据类型2 成员名2;    …   数据类型n 成员名n; }; struct 结构体标识符 数组名[ 数组长度];

2) 定义结构体类型的同时,定义结构体数组。

struct 结构体标识符 {   数据类型1 成员名1;   数据类型2 成员名2;    …   数据类型n 成员名n; } 数组名[ 数组长度];

3) 不给出结构体类型名,直接定义结构体数组。

struct {   数据类型1 成员名1;   数据类型2 成员名2;    …   数据类型n 成员名n; } 数组名[ 数组长度];

其中,“数组名”为数组名称,遵循变量的命名规则;“数组长度”为数组的长度,要求为大于零的整型常量。例如,定义长度为 10 的 struct student 类型数组 stu[10] 的方法有如下 3 种方式。 【方法1】先定义结构体类型,再定义结构体数组。  struct student { char name[10]; char sex; int age; float score; }; struct student stu[10]; struct student { char name[10]; char sex; int age; float score; }; struct student stu[10]; 【方法2】定义结构体类型的同时,定义结构体数组。  struct student { char name[10]; char sex; int age; float score; }stu[10]; 【方法3】不给出结构体类型名,直接定义结构体数组。  struct { char name[10]; char sex; int age; float score; }stu[10]; 结构体数组定义好后,系统即为其分配相应的内存空间,数组中的各元素在内存中连续存放,每个数组元素都是结构体类型,分配相应大小的存储空间。例子中的结构体数组 stu[] 在内存中的存放顺序如图所示。 C语言结构体数组的初始化 结构体类型数组的初始化遵循基本数据类型数组的初始化规律,在定义数组的同时,对其中的每一个元素进行初始化。例如: struct student /* 定义结构体struct student*/ { char Name[20]; /* 姓名*/ float Math; /* 数学*/ float English; /* 英语*/ float Physical; /* 物理*/ }stu[2]={{"zhang",78,89,95},{"wang",87,79,92}}; 在定义结构体类型的同时,定义长度为 2 的结构体数组 stu[2],并分别对每个元素进行初始化。 说明:在定义数组并同时进行初始化的情况下,可以省略数组的长度,系统会根据初始化数据的多少来确定数组的长度。例如: struct key { char name[20]; int count; }key1[ ]={{"break",0},{"case",0},{"void",0}}; 系统会自动确认结构体数组 key1 的长度为 3。 C语言结构体数组元素的引用 对于数组元素的引用,其实质为简单变量的引用。对结构体类型的数组元素的引用也是一样,其语法形式如下。

数组名[数组下标];

[]为下标运算符,数组下标的取值范围为 0,1,2,…,n-1,n 为数组长度。对于结构体数组来说,每一个数组元素都是一个结构体类型的变量,对结构体数组元素的引用遵循对结构体变量的引用规则。 【示例1】结构体数据元素的输入输出。要求从键盘输入5名学生的姓名、性别、年龄和分数,输出其中所有女同学的信息。 #include "stdio.h" int main() { struct student /*定义结构体类型*/ { char name[10]; char sex; /*定义性别,m代表男,f代表女*/ int age; float score; }stu[5]; /*定义结构体数组*/ int i; printf("输入数据:姓名 性别 年龄 分数\n"); /*提示信息*/ /*输入结构体数组各元素的成员值*/ for(i=0;i


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3