구조체의 배열과 C의 구조체 내 배열

둘 다 구조 배열 그리고 구조 내의 배열 C 프로그래밍에서는 배열과 구조의 조합이지만 둘 다 다른 목적으로 사용됩니다.

구조 내의 배열

구조는 데이터 유형입니다. 이를 통해 관련 변수 그룹을 별도의 개체가 아닌 단일 단위로 처리할 수 있습니다. 구조체에는 int, char, float, double 등 다양한 데이터 유형의 요소가 포함될 수 있습니다. 또한 배열이 멤버로 포함될 수도 있습니다. 이러한 배열을 구조 내의 배열이라고 합니다. 구조 내의 배열은 구조의 멤버이며 구조의 다른 요소에 액세스하는 것처럼 액세스할 수 있습니다.

다음은 구조 내에서 배열의 개념을 사용하는 프로그램의 데모입니다. 이 프로그램은 다음을 구성하는 학생의 기록을 표시합니다. 롤 번호 , 등급 , 그리고 점수 다양한 과목에서 보장됩니다. 다양한 주제의 마크는 다음과 같은 배열에 저장되었습니다. 점수 . 전체 레코드는 다음과 같은 구조로 저장됩니다. 후보자 .



아래 프로그램은 구조 내에서 배열을 사용하는 방법을 보여줍니다.




// 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 '> , a1.roll_no);> > printf> (> 'Grade : %c '> , a1.grade);> > printf> (> 'Marks secured: '> );> > int> i;> > int> len => sizeof> (a1.marks) /> sizeof> (> float> );> > // Accessing the contents of the> > // array within the structure> > for> (i = 0; i printf('Subject %d : %.2f ', 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; }>

산출

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 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 printf('Roll number : %d ', class_record[i].roll_no); printf('Grade : %c ', class_record[i].grade); printf('Average marks : %.2f ', class_record[i].marks); printf(' '); } } // 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 

구조 배열과 구조 내 배열의 차이점

다음은 구조 내의 배열과 구조 배열 간의 표 형식 차이점입니다.

매개변수

구조 내의 배열

구조 배열

기본 아이디어 구조체에는 멤버 변수로 배열이 포함됩니다. 각 요소가 구조 유형인 배열입니다.
통사론 구조체 클래스 { int ar[10]; } a1, a2, a3; 구조체 클래스 { int a, b, c; } 학생[10];
입장 구조의 다른 요소에 액세스하는 것처럼 점 연산자를 사용하여 액세스할 수 있습니다. 배열에 액세스하는 것처럼 인덱싱을 통해 액세스할 수 있습니다.
액세스 요소 구문 구조.배열[색인] 배열[인덱스].member
메모리 구조 구조 내의 배열은 순차 메모리에 저장되며 구조 패딩은 배열 크기에 의존하지 않습니다. 구조 패딩으로 인해 구조 요소 사이에 약간의 빈 공간이 있습니다.


인기 기사

범주

재미있는 기사