(十六)记录 -- 3. 数组与记录的结合

本文探讨如何在C语言中使用已定义的employeeT类型创建记录数组staff,演示了数组操作和函数应用,如获取雇员姓名首字母、列出员工信息和计算平均薪水。通过实例说明了如何声明数组、追踪长度及操作记录数组的方法。
摘要由CSDN通过智能技术生成

3. 数组与记录的结合

现代程序设计语言的一大特点是,当拥有一个类型时,就可以利用它来创建更复杂的新类型。

为了达到这一目的,通常可以定义记录数组,或者包含数组的记录。

例如, 在前文定义了一个名为employeeT的类型。一旦定义了该类型,就可以用它来声明数组,而数组的元素的类型就是employeeT。代码:

employeeT staff[10];

就声明staff是具有10个雇员的数组。


可以选取staff的任意元素,就如从其他数组中选取元素一样。

例如,可以用staff[1]来选取Bob Cratchit的整个记录:

对于这条记录,可以进一步选取其中的字段,例如:

staff[1].name

就选取了Bob Cratchit的名字:

其中,Name字段的值是一个字符串,因此可以继续对其中的元素进行选取。

如果想知道staff数组中第一个雇员的名字的首字母,就可以用下面的语句:

staff[1].name[0];

声明一个记录数组的方法与声明其他数组的方法相同,即按照最大长度分配存储空间,再追踪由一个整型变量表示的实际长度。

例如,如果用下列语句定义了常量Max Employees:

#define MaxEmployees 100

就可用下列语句定义变量staff和nEmployees:

employeeT staff[MaxEmployees];
int nEmployees;

该程序最多可以处理100个雇员,大多数情况下,员工数量要小于这个最大值,且存储在变量nEmployees中的值为当前员工数量。

为了要表示如下的两条记录,需要存储前两个记录的相关数据,并指明nEmployees的值:


定义了存储雇员信息的数组staff后,就可以编写过程和函数对其进行操作。

例如,下面的函数可以列出所有雇员的名字和职位:

static void ListEmployees(employeeT staff[], int nEmployees) {
    int i;
    for (i=0; i<nEmployees; i++) {
        printf("%s(%s)\n", staff[i].name, staff[i].title);
    }
}

又如,下述函数返回所有员工的平均薪水:

static double AverageSalary(employeeT staff[], int nEmployees) {
    int i, total;

    total=0;
    for (i=0; i<nEmployees; i++) {
        total += staff[i].salary;
    }
    return total / nEmployees;
}




参考

《C语言的科学和艺术》 —— 16 记录

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值