结构中的数组
结构体是C/C++中的一种数据类型,它允许将一组相关变量视为一个单元而不是单独的实体。一个结构可能包含不同数据类型的元素——int、char、float、double 等。它也可能包含一个数组作为其成员。这样的数组称为结构内的数组。结构中的数组是结构的成员,可以像访问结构的其他元素一样访问。
下面是在结构中使用数组概念的程序的演示。该程序显示学生的记录,包括卷号、等级和在各个科目中获得的分数。各个科目的分数都存储在一个叫做marks的数组下。整个记录存储在一个名为 一个候选人。
C
// C program to demonstrate the
// use of an array within a structure
#include
// Declaration of the structure candidate
struct candidate {
int roll_no;
char grade;
// Array within the structure
float marks[4];
};
// Function to displays the content of
// the structure variables
void display(struct candidate a1)
{
printf("Roll number : %d\n", a1.roll_no);
printf("Grade : %c\n", a1.grade);
printf("Marks secured:\n");
int i;
int len = sizeof(a1.marks) / sizeof(float);
// Accessing the contents of the
// array within the structure
for (i = 0; i < len; i++) {
printf("Subject %d : %.2f\n",
i + 1, a1.marks[i]);
}
}
// Driver Code
int main()
{
// Initialize a structure
struct candidate A
= { 1, 'A', { 98.5, 77, 89, 78.5 } };
// Function to display structure
display(A);
return 0;
}
C
// C program to demonstrate the
// usage of an array of structures
#include
// Declaring a structure class
struct class {
int roll_no;
char grade;
float marks;
};
// Function to displays the contents
// of the array of structures
void display(struct class class_record[3])
{
int i, len = 3;
// Display the contents of the array
// of structures here, each element
// of the array is a structure of class
for (i = 0; i < len; i++) {
printf("Roll number : %d\n",
class_record[i].roll_no);
printf("Grade : %c\n",
class_record[i].grade);
printf("Average marks : %.2f\n",
class_record[i].marks);
printf("\n");
}
}
// Driver Code
int main()
{
// Initialize of an array of structures
struct class class_record[3]
= { { 1, 'A', 89.5f },
{ 2, 'C', 67.5f },
{ 3, 'B', 70.5f } };
// Function Call to display
// the class_record
display(class_record);
return 0;
}
输出:
Roll number : 1
Grade : A
Marks secured:
Subject 1 : 98.50
Subject 2 : 77.00
Subject 3 : 89.00
Subject 4 : 78.50
结构数组
数组是相同类型的数据项的集合。数组的每个元素都可以是 int、char、float、double,甚至是一个结构体。我们已经看到,结构允许将不同数据类型的元素组合到一个名称下。这种结构本身就可以被认为是一种新的数据类型。因此,数组可以包含这种新数据类型的元素。结构数组可用于将记录分组在一起并提供快速访问。
下面是一个结构数组的演示。该数组包含班级中学生的详细信息。详细信息包括已在结构(记录)下分组的卷号、等级和标记。每个学生存在一个记录。这就是如何在单个实体下组装相关变量的集合,以增强代码的清晰度并提高其效率。
C
// C program to demonstrate the
// usage of an array of structures
#include
// Declaring a structure class
struct class {
int roll_no;
char grade;
float marks;
};
// Function to displays the contents
// of the array of structures
void display(struct class class_record[3])
{
int i, len = 3;
// Display the contents of the array
// of structures here, each element
// of the array is a structure of class
for (i = 0; i < len; i++) {
printf("Roll number : %d\n",
class_record[i].roll_no);
printf("Grade : %c\n",
class_record[i].grade);
printf("Average marks : %.2f\n",
class_record[i].marks);
printf("\n");
}
}
// Driver Code
int main()
{
// Initialize of an array of structures
struct class class_record[3]
= { { 1, 'A', 89.5f },
{ 2, 'C', 67.5f },
{ 3, 'B', 70.5f } };
// Function Call to display
// the class_record
display(class_record);
return 0;
}
输出:
Roll number : 1
Grade : A
Average marks : 89.50
Roll number : 2
Grade : C
Average marks : 67.50
Roll number : 3
Grade : B
Average marks : 70.50
以下是结构中的数组和结构数组之间的表格差异:
Array within a Structure | Array of Structures | |
---|---|---|
Basic idea | A structure contains an array as its member variable | An array in which each element is of type structure |
Access | Can be accessed using the dot operator just as we access other elements of the structure | Can be accessed by indexing just as we access an array |
Syntax |
struct class { int ar[10]; } a1, a2, a3; |
struct class { int a, b, c; } students[10]; |
想要从精选的视频和练习题中学习,请查看C 基础到高级C 基础课程。