📜  结构数组与 C/C++ 结构中的数组

📅  最后修改于: 2021-09-06 11:33:18             🧑  作者: Mango

结构中的数组

结构体是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
想要从精选的视频和练习题中学习,请查看C 基础到高级C 基础课程