본문 바로가기

전자 공학/C언어 C++

[C언어 독학하기] 18. 구조체란? struct, typedef

반응형

 

 

 

안녕하세요. 취업한 공대누나입니다.

오늘은 구조체에 대해 공부해보도록 하겠습니다.

 

1. 구조체란? (의미와 선언 방법)

 

구조체는 사용자가 정의해서 사용하는 사용자 정의 자료형입니다.

하나 이상의 변수들을 그룹화하여 새로운 자료형을 만드는 것입니다.

구조체를 정의한다는 것은 구조체를 만든다는 의미와 같습니다.

어떻게 구조체를 만드는지 보도록 하겠습니다.

 

struct라는 키워드가 바로 구조체의 시작을 알리는 부분입니다.

computer라는 이름의 구조체를 정의하고 있습니다.

그리고 중괄호 안에 변수를 선언해줍니다.

구조체에 의해 정리된 요소를 우리는 멤버라고 부릅니다.

다 선언을 한 뒤에 세미콜론을 꼭 해줘야 하는 것 잊지 마세요.

 

일반적으로는 위와 같이 main 함수 바깥에 선언하지만 이것은 어떻게 사용하느냐에 따라 달라집니다.

 

구조체를 위와 같이 만들었다고 해서 끝난 것이 아닙니다.

int형 변수를 사용할 때에도 우리가 int a와 같이 a라는 이름의 변수를 선언해줍니다.

구조체도 마찬가지입니다.

c1이라는 구조체 변수를 선언해 주어야 합니다.

선언해 줄 때에는 struct 키워드와 함께 우리가 만든 구조체 (템플릿)이름을 써주고 구조체 (변수명)을 입력합니다.

즉, struct computer c1이라고 해주면 됩니다.

 

 

2. 구조체의 초기화

 

이번엔 구조체의 초기화 방법에 대해 이야기 해보도록 하겠습니다.

 

위의 그림과 같이 구조체에 선언해 놓은 것에 맞춰서 데이터를 입력하면 됩니다.

monitor에는 30, keyboard에는 1, ram에는 16이라는 값이 들어간 것입니다.

 

 

3. 구조체 멤버에 접근

 

그렇다면 이번에는 값이 잘 저장되어 있는지 확인해보도록 하겠습니다.

구조체 변수의 멤버에 접근 할 때에는 '.'을 사용하여 접근을 하게 됩니다.

예시를 한 번 보도록 하겠습니다.

 

c1의 monitor라는 멤버에 접근을 하고 싶으면 c1.monitor와 같이 참조를 하면 됩니다.

변수에 값을 대입할 때에도 마찬가지인데요.

 

처음에 값을 대입할 때에도 그림과 같이 해줄 수 있습니다.

.을 이용해서 멤버에 접근한 뒤 값을 할당해줍니다.

 

 

4. typedef

 

우리는 위에서 computer라는 구조체 템플릿의 변수를 선언하기 위해서는

struct computer c1이라고 해야 한다고 알았습니다.

 

하지만 이렇게 매번 struct 키워드를 붙여야 하는 것은 아닙니다.

구조체의 별칭을 만들어서 키워드를 없앨 수 있는데요.

typedef라는 키워드를 이용하면 됩니다.

 

위와 같이 구조체 템플릿을 만들 때 typedef라는 키워드를 넣었습니다.

그리고 중괄호를 닫은후 ~ 세미콜론 사이에 구조체의 별명과 같은 것을 붙여줍니다.

 

위와 같이 하고 난 뒤에는  구조체를 선언할 때에 struct키워드를 빼도 됩니다.

나머지 멤버에 접근을 하고 값을 할당하는 것은 기존과 똑같습니다.

 

구조체는 여러 형의 데이터를 묶어야 할 때 사용해주면 좋습니다.

예를 들어서 함수에 데이터를 넘겨줄 때 구조체 자체를 넘겨주게 되면 

함수를 읽을 때에도 수정을 할 때에도 훨씬 쉬워집니다.

 

감사합니다.

 

반응형