logo

C 구조

왜 구조를 사용하는가?

C에서는 엔터티의 여러 속성을 저장해야 하는 경우가 있습니다. 엔터티가 한 가지 유형의 모든 정보만을 가질 필요는 없습니다. 다양한 데이터 유형의 다양한 속성을 가질 수 있습니다. 예를 들어 엔터티 학생 이름(문자열), 롤 번호(int), 마크(float)를 가질 수 있습니다. 엔터티 학생에 관한 이러한 유형의 정보를 저장하기 위해 다음과 같은 접근 방식이 있습니다.

  • 이름, 롤 번호 및 표시를 저장하기 위한 개별 배열을 구성합니다.
  • 다양한 데이터 유형의 컬렉션을 저장하려면 특별한 데이터 구조를 사용하십시오.

첫 번째 접근 방식을 자세히 살펴보겠습니다.

 #include void main () { char names[2][10],dummy; // 2-dimensioanal character array names is used to store the names of the students int roll_numbers[2],i; float marks[2]; for (i=0;i<3;i++) { printf('enter the name, roll number, and marks of student %d',i+1); scanf('%s %d %f',&names[i],&roll_numbers[i],&marks[i]); scanf('%c',&dummy); enter will be stored into dummy character at each iteration } printf('printing details ...
'); for (i="0;i&lt;3;i++)" printf('%s %f
',names[i],roll_numbers[i],marks[i]); < pre> <p> <strong>Output</strong> </p> <pre> Enter the name, roll number, and marks of the student 1Arun 90 91 Enter the name, roll number, and marks of the student 2Varun 91 56 Enter the name, roll number, and marks of the student 3Sham 89 69 Printing the Student details... Arun 90 91.000000 Varun 91 56.000000 Sham 89 69.000000 </pre> <p>The above program may fulfill our requirement of storing the information of an entity student. However, the program is very complex, and the complexity increase with the amount of the input. The elements of each of the array are stored contiguously, but all the arrays may not be stored contiguously in the memory. C provides you with an additional and simpler approach where you can use a special data structure, i.e., structure, in which, you can group all the information of different data type regarding an entity.</p> <h2>What is Structure</h2> <p>Structure in c is a user-defined data type that enables us to store the collection of different data types. Each element of a structure is called a member. Structures ca; simulate the use of classes and templates as it can store various information </p> <p>The <strong>,struct</strong> keyword is used to define the structure. Let&apos;s see the syntax to define the structure in c.</p> <pre> struct structure_name { data_type member1; data_type member2; . . data_type memeberN; }; </pre> <p>Let&apos;s see the example to define a structure for an entity employee in c.</p> <pre> struct employee { int id; char name[20]; float salary; }; </pre> <p>The following image shows the memory allocation of the structure employee that is defined in the above example.</p> <img src="//techcodeview.com/img/c-tutorial/01/c-structure.webp" alt="c structure memory allocation"> <p>Here, <strong>struct</strong> is the keyword; <strong>employee</strong> is the name of the structure; <strong>id</strong> , <strong>name</strong> , and <strong>salary</strong> are the members or fields of the structure. Let&apos;s understand it by the diagram given below:</p> <img src="//techcodeview.com/img/c-tutorial/01/c-structure-2.webp" alt="c structure"> <h2>Declaring structure variable</h2> <p>We can declare a variable for the structure so that we can access the member of the structure easily. There are two ways to declare structure variable:</p> <ol class="points"> <li>By struct keyword within main() function</li> <li>By declaring a variable at the time of defining the structure.</li> </ol> <p> <strong>1st way:</strong> </p> <p>Let&apos;s see the example to declare the structure variable by struct keyword. It should be declared within the main function.</p> <pre> struct employee { int id; char name[50]; float salary; }; </pre> <p>Now write given code inside the main() function.</p> <pre> struct employee e1, e2; </pre> <p>The variables e1 and e2 can be used to access the values stored in the structure. Here, e1 and e2 can be treated in the same way as the objects in <a href="/c-tutorial">C++</a> and <a href="/java-tutorial">Java</a> .</p> <p> <strong>2nd way:</strong> </p> <p>Let&apos;s see another way to declare variable at the time of defining the structure.</p> <pre> struct employee { int id; char name[50]; float salary; }e1,e2; </pre> <h3>Which approach is good</h3> <p>If number of variables are not fixed, use the 1st approach. It provides you the flexibility to declare the structure variable many times.</p> <p>If no. of variables are fixed, use 2nd approach. It saves your code to declare a variable in main() function.</p> <h2>Accessing members of the structure</h2> <p>There are two ways to access structure members:</p> <ol class="points"> <li>By . (member or dot operator)</li> <li>By -&gt; (structure pointer operator)</li> </ol> <p>Let&apos;s see the code to access the <em>id</em> member of <em>p1</em> variable by. (member) operator.</p> <pre> p1.id </pre> <h3>C Structure example</h3> <p>Let&apos;s see a simple example of structure in C language.</p> <pre> #include #include struct employee { int id; char name[50]; }e1; //declaring e1 variable for structure int main( ) { //store first employee information e1.id=101; strcpy(e1.name, &apos;Sonoo Jaiswal&apos;);//copying string into char array //printing first employee information printf( &apos;employee 1 id : %d
&apos;, e1.id); printf( &apos;employee 1 name : %s
&apos;, e1.name); return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> employee 1 id : 101 employee 1 name : Sonoo Jaiswal </pre> <p>Let&apos;s see another example of the structure in <a href="/c-programming-language-tutorial">C language</a> to store many employees information.</p> <pre> #include #include struct employee { int id; char name[50]; float salary; }e1,e2; //declaring e1 and e2 variables for structure int main( ) { //store first employee information e1.id=101; strcpy(e1.name, &apos;Sonoo Jaiswal&apos;);//copying string into char array e1.salary=56000; //store second employee information e2.id=102; strcpy(e2.name, &apos;James Bond&apos;); e2.salary=126000; //printing first employee information printf( &apos;employee 1 id : %d
&apos;, e1.id); printf( &apos;employee 1 name : %s
&apos;, e1.name); printf( &apos;employee 1 salary : %f
&apos;, e1.salary); //printing second employee information printf( &apos;employee 2 id : %d
&apos;, e2.id); printf( &apos;employee 2 name : %s
&apos;, e2.name); printf( &apos;employee 2 salary : %f
&apos;, e2.salary); return 0; } </pre> <p> <strong>Output:</strong> </p> <pre> employee 1 id : 101 employee 1 name : Sonoo Jaiswal employee 1 salary : 56000.000000 employee 2 id : 102 employee 2 name : James Bond employee 2 salary : 126000.000000 </pre> <hr></3;i++)>

위의 프로그램은 법인 학생의 정보를 저장해야 하는 요구 사항을 충족할 수 있습니다. 그러나 프로그램은 매우 복잡하며 입력량이 많을수록 복잡성이 증가합니다. 각 배열의 요소는 연속적으로 저장되지만 모든 배열이 메모리에 연속적으로 저장되지는 ​​않을 수도 있습니다. C는 엔터티에 관한 다양한 데이터 유형의 모든 정보를 그룹화할 수 있는 특별한 데이터 구조, 즉 구조를 사용할 수 있는 추가적이고 간단한 접근 방식을 제공합니다.

구조란 무엇인가

c의 구조는 다양한 데이터 유형의 컬렉션을 저장할 수 있는 사용자 정의 데이터 유형입니다. 구조체의 각 요소를 멤버라고 합니다. 구조 ca; 다양한 정보를 저장할 수 있으므로 클래스 및 템플릿 사용을 시뮬레이션합니다.

그만큼 ,구조체 키워드는 구조를 정의하는 데 사용됩니다. c에서 구조를 정의하는 구문을 살펴보겠습니다.

 struct structure_name { data_type member1; data_type member2; . . data_type memeberN; }; 

c에서 엔터티 직원의 구조를 정의하는 예를 살펴보겠습니다.

js의 전역 변수
 struct employee { int id; char name[20]; float salary; }; 

다음 이미지는 위 예에서 정의된 Employee 구조의 메모리 할당을 보여줍니다.

C 구조 메모리 할당

여기, 구조체 키워드입니다; 직원 구조의 이름입니다. ID , 이름 , 그리고 샐러리 구조체의 멤버 또는 필드입니다. 아래 다이어그램을 통해 이해해 봅시다.

자바 색상 코드
C 구조

구조 변수 선언

구조체의 멤버에 쉽게 접근할 수 있도록 구조체에 대한 변수를 선언할 수 있습니다. 구조체 변수를 선언하는 방법에는 두 가지가 있습니다.

  1. main() 함수 내의 struct 키워드로
  2. 구조를 정의할 때 변수를 선언합니다.

첫 번째 방법:

struct 키워드로 구조체 변수를 선언하는 예를 살펴보겠습니다. 이는 main 함수 내에서 선언되어야 합니다.

 struct employee { int id; char name[50]; float salary; }; 

이제 main() 함수 안에 주어진 코드를 작성합니다.

 struct employee e1, e2; 

변수 e1 및 e2를 사용하여 구조에 저장된 값에 액세스할 수 있습니다. 여기서 e1과 e2는 다음의 객체와 동일한 방식으로 처리될 수 있습니다. C++ 그리고 자바 .

두 번째 방법:

구조체를 정의할 때 변수를 선언하는 또 다른 방법을 살펴보겠습니다.

자바 이스케이프 문자
 struct employee { int id; char name[50]; float salary; }e1,e2; 

어떤 접근법이 좋은가

변수 개수가 고정되어 있지 않으면 첫 번째 접근 방식을 사용하십시오. 이는 구조 변수를 여러 번 선언할 수 있는 유연성을 제공합니다.

그렇지 않다면. 변수가 고정되어 있으므로 두 번째 접근 방식을 사용하십시오. main() 함수에서 변수를 선언하기 위해 코드를 저장합니다.

구조체의 멤버에 접근하기

구조 멤버에 액세스하는 방법에는 두 가지가 있습니다.

  1. 에 의해 . (멤버 또는 점 연산자)
  2. ->(구조 포인터 연산자) 기준

액세스하는 코드를 살펴보겠습니다. ID 의 멤버이다 p1 변수에 의해. (회원) 운영자.

 p1.id 

C 구조 예

C 언어의 간단한 구조 예를 살펴보겠습니다.

 #include #include struct employee { int id; char name[50]; }e1; //declaring e1 variable for structure int main( ) { //store first employee information e1.id=101; strcpy(e1.name, &apos;Sonoo Jaiswal&apos;);//copying string into char array //printing first employee information printf( &apos;employee 1 id : %d
&apos;, e1.id); printf( &apos;employee 1 name : %s
&apos;, e1.name); return 0; } 

산출:

 employee 1 id : 101 employee 1 name : Sonoo Jaiswal 

구조의 또 다른 예를 살펴보겠습니다. C 언어 많은 직원 정보를 저장합니다.

 #include #include struct employee { int id; char name[50]; float salary; }e1,e2; //declaring e1 and e2 variables for structure int main( ) { //store first employee information e1.id=101; strcpy(e1.name, &apos;Sonoo Jaiswal&apos;);//copying string into char array e1.salary=56000; //store second employee information e2.id=102; strcpy(e2.name, &apos;James Bond&apos;); e2.salary=126000; //printing first employee information printf( &apos;employee 1 id : %d
&apos;, e1.id); printf( &apos;employee 1 name : %s
&apos;, e1.name); printf( &apos;employee 1 salary : %f
&apos;, e1.salary); //printing second employee information printf( &apos;employee 2 id : %d
&apos;, e2.id); printf( &apos;employee 2 name : %s
&apos;, e2.name); printf( &apos;employee 2 salary : %f
&apos;, e2.salary); return 0; } 

산출:

 employee 1 id : 101 employee 1 name : Sonoo Jaiswal employee 1 salary : 56000.000000 employee 2 id : 102 employee 2 name : James Bond employee 2 salary : 126000.000000