Linux C 编程教程第 27 部分 - 结构数组
在此页
- C 语言中的结构数组
- 结论
在这个正在进行的 C 编程教程系列中,我们最近一直在讨论结构。我们已经介绍了结构的基础知识,结构如何与函数一起使用,以及结构指针的概念。
现在,进一步扩展结构的概念,我们将讨论如何使用易于理解的示例来创建结构数组。
C语言中的结构数组
让我们开始吧。这是一个名为 student_details 的简单结构,如您所见,可用于存储学生的卷号和分数:
struct student_details{
int roll_no;
int marks;
};
现在,假设总共有 5 个学生,需求是接受用户输入这些学生的详细信息。那么为此编写代码的一种方法是:
#include <stdio.h>
struct student_details{
int roll_no;
int marks;
};
int main()
{
struct student_details obj1;
struct student_details obj2;
struct student_details obj3;
struct student_details obj4;
struct student_details obj5;
...
...
...
或者可能是这样的:
#include <stdio.h>
struct student_details{
int roll_no;
int marks;
};
int main()
{
struct student_details obj1, obj2, obj3, obj4, obj5;
...
...
...
现在,如果您遵循上述方法,就没有什么坏处。出现的唯一问题是这些方法是否可扩展。我的意思是,如果您需要创建 50 个对象或实例而不是 5 个,那会怎样呢?在那种情况下,遵循这些方法肯定会使代码编写和维护变得更加复杂。
那么有解决办法吗?嗯,是。更好的方法是创建一个 student_details 结构数组。就是这样:
struct student_details obj[5];
下面是一个使用这个结构数组的完整程序:
#include <stdio.h>
struct student_details{
int roll_no;
int marks;
};
int main()
{
struct student_details obj[5];
int i;
for(i=0;i<5;i++)
{
printf("\n Enter roll number: ");
scanf("%d", &(obj[i].roll_no));
printf("\n Enter marks (out of 100): ");
scanf("%d", &(obj[i].marks));
}
printf("\n Here's the data you've entered::");
for(i=0;i<5;i++)
{
printf("\n Roll number: %d", (obj[i].roll_no));
printf("-- Marks: %d", (obj[i].marks));
}
return 0;
}
所以在这里,我们使用了之前讨论过的 student_details 结构,并创建了一个包含 5 个该类型对象的数组。然后,程序要求用户输入学生学号并一一标记。每个学生对应的信息存储在结构数组的每个实例中。最后,存储的信息作为输出打印回给用户。
这是我案例中的输出:
Enter roll number: 1
Enter marks (out of 100): 67
Enter roll number: 2
Enter marks (out of 100): 73
Enter roll number: 3
Enter marks (out of 100): 56
Enter roll number: 4
Enter marks (out of 100): 52
Enter roll number: 5
Enter marks (out of 100): 85
Here's the data you've entered::
Roll number: 1-- Marks: 67
Roll number: 2-- Marks: 73
Roll number: 3-- Marks: 56
Roll number: 4-- Marks: 52
Roll number: 5-- Marks: 85
使用这种方法,您可以轻松地扩展您的程序。也就是说,即使有50个学生的信息需要存储和打印,你只需要将数组的大小增加到50,相关的改动很少。其余代码保持不变。因此,简而言之,与我们在教程开头讨论的方法相比,您可以在使用数组时轻松处理可伸缩性。
结论
在本教程中,我们介绍了结构数组的基本概念。使用易于理解的示例,我们讨论了为什么结构数组很重要、何时使用它以及如何使用它。建议您在您的机器上试用本教程中的示例。如有任何疑问或疑问,请在下方发表评论。