结构体数组定义 |
TAG:
结构体,结构体数组,结构体数组定义
TEXT:
数组是一组具有相同数据类型变量的有序集合,可以通过下标获得其中的任意元素。结构体类型数组与基本类型数组的定义与引用规则是相同的,区别在于结构体数组中的所有元素均为结构体变量。
结构体变量有三种定义方法,因此结构体数组也具有三种定义方法,如下:
方式1:
struct
结构体标识符
{
成员变量列表;
…
};
struct
结构体标识符 数组名[数组长度];
方式2:
struct
结构体标识符
{
成员变量列表;
…
}
数组名[数组长度];
方式3:
struct
{
成员变量列表;
…
}
数组名[数组长度];
其中“数组名”为数组名称,遵循变量的命名规则;“数组长度”为数组的长度,要求为大于零的整型常量。例如:定义长度为10的struct Point类型数组oPoints的方法有如下三种形式:
方式1:
struct Point
{
double x;
double y;
double z;
};
struct Point
oPoints[10];
方式2:
struct Point
{
double x;
double y;
double z;
} oPoints[10];
方式3:
struct
{
double x;
double y;
double z;
} oPoints[10];
结构体数组oPoints在内存中的连续存放,如图所示:
在内存中的存储顺序如下:
oPoints [0].x
oPoints [0].y
oPoints [0].z
oPoints [1].x
oPoints [1].y
oPoints [1].z
oPoints [2].x
……
结构体数组的初始化 |
TAG:
结构体,结构体数组,结构体数组的初始化
TEXT:
结构体类型数组的初始化遵循基本数据类型数组的初始化规律,在定义数组的同时,对其中的每一个元素进行初始化。例如:
struct Student /*
定义结构体struct Student*/
{
char Name[20]; /*
姓名*/
float Math; /*
数学*/
float English; /*
英语*/
float Physical; /*
物理*/
}oStus[2]={
{
“Liming”,78,89,95},
{
“Majun”,87,79,92}
};
在定义结构体struct Student 的同时定义长度为2的struct Student 类型数组oStus,并分别对每个元素进行初始化,每个元素的初始化规律遵循结构体变量的初始化规律。
在定义数组并同时进行初始化的情况下,可以省略数组的长度,系统根据初始化数据的多少来确定数组的长度。例如:
struct Key
{
char word[20];
int count;
}keytab[]={
{
“break”,0},
{
“case”,0},
{
“void”,0}
};
结构体数组keytab的长度,系统自动确认为3。