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