C-language

구조체란 무엇일까

전자둥이 2021. 1. 23. 15:24
반응형

본 포스팅은 개인적으로 공부하여 이해한 것을 바탕으로 작성되어있으므로 틀린 부분이 있을 수도 있습니다. 궁금한 점이 있다면 댓글을 남겨주세요!

 

먼저 구조체는 하나의 객체를 정의 할 수 있는 기능을 가지고 있습니다.

그리고 구조체를 사용하는 이유는 여러개의 변수자체가 하나의 특성으로 모아서 사용하고 싶을 때 사용합니다.

 

기본 구조

struct 구조체 이름 {

    //해당 구조체를 정의할만한 변수들,,,

};

 

예제

struct Students{

    char studentId[10];

    char name[10];

    int age;

}

 

int main(void){

    struct Students s;  // 구조체 변수 선언

    strcpy(s.studentId, "20151178"); //구조체 변수에 접근

    strcpy(s.name, "유재석");

    s.grade = 4;

}

 

이렇게 구조체 변수들을 초기화 해줘도 되고 또는

int main(void){

    struct Students s = {"20151178", "유재석", "4"};

}

이러한 형태로 적어주어도 됩니다.

 

하나의 구조체 변수만 사용하는 경우 정의와 동시에 선언을 할 수도 있습니다. 이 경우에는 변수가 전역 변수로 사용되어집니다.

형태

struct 구조체 이름{

    //해당 구조체를 정의할만한 변수들...

}정의할 전역변수 이름;

 

이번에는 typedef키워드를 사용하는 방법을 소개해볼게요!

예를 들어 Students라는 구조체를 매번 가져올 때마다 struct Students a, struct Students b ...이런식으로 해줘야하는데

typedef를 사용하게되면!

typedef struct Students{

    //해당 구조체를 정의할만한 변수들..

} test;

 

구조체를 가져올 때 Struct를 안쓰고 test a, test b ... 이런식으로 사용할 수 있습니다.

 

마지막으로 이 구조체를 포인터 변수로 사용하고 싶을 때 사용하는 방법을 소개하려고 합니다.

 

typedef struct Students{

    char studentId[10];

    char name[10];

    int age;

} test;

 

int main(void){

    test *s = malloc(sizeof(tset));  // 구조체 변수 선언

    strcpy(s -> studentId, "20151178"); //구조체 변수에 접근

    strcpy(s -> name, "유재석");

    s -> grade = 4;

}

 

포인터 변수 즉 동적할당을 이용해서 포인터 변수에 접근할 때 화살표를 사용하여 해당 변수에 접근할 수 있습니다.

 

이상으로 이번 포스팅을 마치도록 하겠습니다. 감사합니다.

 

 

반응형

'C-language' 카테고리의 다른 글

[C언어] 배열 array  (0) 2022.07.27
c++ 클래스란 무엇일까  (0) 2021.01.24
c언어 전처리기란 무엇일까요?  (0) 2021.01.24
구조체와 파일입출력을 활용한 예제  (0) 2021.01.23
파일 입출력이란??  (0) 2021.01.23