출처: https://blog.iroot.kr/341 [RootKR] [C] C언어에서 구조체 선언하기

상세 컨텐츠

본문 제목

[C] C언어에서 구조체 선언하기

UNIX&C언어

by QKRM 2020. 2. 28. 21:35

본문

C언어에서 구조체는 다양하게 사용가능 합니다. 예를 들면 여러가지 변수의 묶음을 한번에 전달할 수 있고,

연결 리스트로 사용할 수 도 있습니다.

하지만 구조체의 정의와 구조체 변수는 다양한 방법으로 선언할 수 있습니다.

한번씩 알아보고 넘어가는게 타인의 코드를 볼 때 쉬운 이해를 도울 수 있을 것 같아 정리합니다.

 

1
2
3
4
struct card{
    int  pips;
    char suit;
};

 

위와 같은 코드는 구조체 변수 선언이 아닌 struct card에 대한 정의 입니다.

 

1
2
3
4
5
6
struct card{
    int pips;
    char suits;
};
 
struct card c1, c2;

 

이렇게 되면 위에서 정의한 struct card 형 변수 c1, c2 가 생기게 됩니다.

 

1
2
3
4
struct card{
    int pips;
    char suits;
}    c1, c2;

 

이런 식으로 struct card형 변수 c1, c2 를 생성할 수 있습니다.

 

1
2
3
4
5
6
7
8
struct card{
    int pips;
    char suits;
};
 
typedef struct card card;
 
card c1, c2;

 

typedef 를 통해 struct card 형 변수의 별칭을 card로 정의 한 뒤

card 형 변수 c1, c2를 선언한 경우입니다.

struct cardcard라는 별칭으로 선언되었기 때문에 이제 card c3; 등의 방법을 통해

구조체 변수를 선언 할 수 있습니다.

 

1
2
3
4
5
6
typedef struct card{
    int pips;
    char suits;
} card;
 
card c1, c2;

위 코드는 이전 코드와 기능이 같습니다. struct card 형 변수를 typedef를 통해

card라는 별칭을 만들어주고 card형 변수 c1,c2를 선언합니다.

이 형태가 가장 일반적으로 구조체를 선언하는 형태입니다.

헤더파일에 4번 line 까지 선언을 해 놓으면 int, char와 같이

변수로 쉽게 선언하고 사용할 수 있습니다.

 

1
2
3
4
struct {
    int  pips;
    char suit;
} c1, c2;

 

이렇게 되면 구조체 태그 이름이 없기 때문에 c1, c2와 같은 형의 변수는 다시 선언할 수 없습니다.

 

1
2
3
4
5
6
7
8
9
struct {
    int  pips;
    char suit;
} c1, c2;
 
struct {
    int  pips;
    char suit;
} c3, c4;

 

이 코드에서 같은 방법으로 선언되었지만 c1,c2c3,c4는 분명히 다른 자료형입니다.

 

다음 글은 몇가지 예시를 통해 구조체에 대해 알아보겠습니다. 될 수있으면..?

관련글 더보기

댓글 영역