logo

구조체의 배열과 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
메모리 구조 구조 내의 배열은 순차 메모리에 저장되며 구조 패딩은 배열 크기에 의존하지 않습니다. 구조 패딩으로 인해 구조 요소 사이에 약간의 빈 공간이 있습니다.