본문 바로가기
프로그래밍/C언어

C언어 공부하기 - 구조체(Structure)

by 헬맷쓰다 2023. 6. 3.
반응형

구조체(Structure)는 서로 다른 형의 변수를 한데 묶어놓은 모음으로 생각할 수 있습니다. 예를 들어 회원 정보를 입력한다고 할 때 이름, 나이, 주소, 전화번호 등을 각각의 변수로 선언하여 취급할 수도 있지만 구조체를 사용하면 회원 정보를 독립된 형태의 변수처럼 다룰 수가 있습니다. 또 다른 예로 좌표평면의 점을 표시할 때도 구조체를 사용할 수 있습니다.

기본개념

다음과 같은 좌표평면의 점을 C언어로 코딩한다고 합시다.

좌표평면

 

구조체를 모른다면 다음과 같이 선언할 수 있습니다.

int x;
int y;

그런데, 점이 하나가 아니라 100개라고 하면 어떻게 할까요? 걍 단순히 생각하면 다음과 같이 하면 다음과 같이 쓸 수 있습니다. 각각 100개의 변수를 선언하는 겁니다.

int x1, x2, x3, ....., x100;
int y1, y2, y3, ....., y100;

조금 개선을 해보죠. 우리에게는 배열(Array)이 있잖아요.

int x[100];
int y[100];

조금은 깔끔해졌습니다. 하지만 x,  y라는 변수가 함께 쓰인다는 의미는 담겨있지 않습니다. 그래서 구조체를 사용하여 이게 좌표평면의 점이다라고 선언을 해보겠습니다.

struct point {
    int x;
    int y;
};

위 코드는 구조체를 선언한건데 struct 키워드로 시작됩니다. 구조체의 이름은 point라고 정했구요. 중괄호로 묶인 안에 변수를 선언하고 마지막에 세미클론을 써서 마무리해줍니다. 구조체에서 선언한 변수들은 멤버(member)변수라고 부릅니다.

그러면 그림의 좌표 (4, 3)을 위에서 선언한 구조체로 사용하려면 다음과 같이 하시면 됩니다.

struct point pt = {4, 3};

선언과 동시에 초기화를 하지 않을 경우 각각의 멤버변수에 값을 대입해야 합니다. 멤버변수의 접근은 . 연산자를 통해서 할 수 있습니다.

pt.x = 4;
pt.y = 3;

 

구조체는 중첩해서 사용할 수 있습니다. 예를 들어 아래와 같은 사각형은 대각선을 마주 본 두 점으로 표현할 수 있습니다.

사각형

struct rectangle {
    struct point pt1;
    struct point pt2;
};

struct rectangle screen;

screen.pt1.x = 1;

ractangle이라는 구조체는 두개의 point  구조체를 포함합니다. 그리고 screen이라는 변수로 구조체 선언을 해주고,  pt1의 x좌표를 위와 같이 참조할 수 있습니다.

구조체를 사용한 예제 포스팅을 링크해두니 참고 하시기 바랍니다. 그럼 안녕~

2020.07.29 - [프로그래밍/자료구조] - [C언어와 함께 자료구조를] 연결리스트로 스택 구현

 

[C언어와 함께 자료구조를] 연결리스트로 스택 구현

스택 개념 다시보기 스택(Stack)은 단어의 뜻에서 의미하듯 쌓아 놓는 구조로 매우 간단합니다. 예를 들면, 책 10권을 차례대로 쌓았다고 하면 책을 치우기 위해서 맨 위에서 부터 차례차례 치워나

hellmath.tistory.com

 

반응형

댓글