首页 百科知识 结构体数组的初始化

结构体数组的初始化

时间:2024-10-20 百科知识 版权反馈
【摘要】:结构体数组初始化的一般形式是在定义数组的后面加上“={初值表列};”。程序定义一个全局的结构体数组leader,它有3个元素,每一个元素包含两个成员name(姓名)和count(票数)。在定义数组时使之初始化,使3位候选人的票数都先置零。在输入和统计结束之后,将3人的名字和得票数输出。

10.2.2 结构体数组的初始化

1.与其他类型的数组一样,对结构体数组可以初始化。结构体数组初始化的一般形式是在定义数组的后面加上“={初值表列};”。

例如:

img522

定义数组stu时,元素个数可以不指定,即写成以下形式:

stu[]={{…},{…},{…}};数组成员如图10-1所示。

img523

图10-1

数组各元素在内存中连续存放。

编译时,系统会根据给出初值的结构体常量的个数来确定数组元素的个数。一个结构体常量中全部成员的值。

当然,数组的初始化也可以用以下形式:

img524

即先声明本类型,然后定义数组为该结构体类型,在定义数组时初始化。

2.举一个简单的例子来说明结构体数组的定义和引用。

【例10-2】对候选人得票的统计程序。设有3个候选人,每次输入一个得票的候选人的名字,要求最后输出每个人的得票结果。

程序如下:

img525

img526

程序运行结果:

img527

程序定义一个全局的结构体数组leader,它有3个元素,每一个元素包含两个成员name(姓名)和count(票数)。在定义数组时使之初始化,使3位候选人的票数都先置零。

在主函数中定义字符数组leader_name,它代表被选人的具体人名,然后把它与3个候选人姓名相比,看它和哪一个候选人的名字相同。注意leader_name是和结构体数组中的leader[j].name相比,leader[j]是结构体数组中的字符数组leader的第j个元素,它包含两个成员项,leader_name应该和leader数组第j个元素的name成员相比。若j为某一值时,输入的姓名与leader[j].name相等,就执行”leader[j].count++”,由于成员运算符“.”优先于自增运算符“++”,因此它相当于(leader[j].count)++,使leader[j]的成员count的值加1。在输入和统计结束之后,将3人的名字和得票数输出。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈