[기초] C언어

구조체

종퐁이 2024. 6. 5. 16:54

1. 구조체란?

- 서로 다른 자료형을 갖는 자료의 모임을 하나의 자료형으로 정의하여 사용하는 자료형을 말한다.

- 사용자가 C언어의 기본 타입을 가지고 새롭게 정의할 수 있는 사용자 정의 타입

- 배열이 같은 타입의 변수 집합이라고 한다면, 구조체는 다양한 타입의 변수 집합을 하나의 타입으로 나타낸 것

- 사용자 정의 자료형 (user-defined data type)

2. 정의

- 문법

# 구조체 정의

struct 구조체이름 {

          자료형 변수명 1;

          자료형 변수명 2;

                   ...

};  <--- 마지막은 반드시 ";"을 넣어야 함

-----------------------------------------------------------------------------------------------------------

# 구조체 변수의 선언

struct 구조체명 변수명;

-----------------------------------------------------------------------------------------------------------

# 구조체 정의와 구조체 변수 선언을 동시에 하기

struct 구조체이름 {

          자료형 변수명 1;

          자료형 변수명 2;

                   ...

} 구조체변수명;

-----------------------------------------------------------------------------------------------------------

EX) struct point {

                      int x;

                      int y;

};

 

3. typedf

- typerdef은 뜻 그대로 자료형(type)을 정의(define) 하는 것이다.

- C언어가 기본적으로 제공하는 int형이나 float형이나 구조체로 만든 기존 자료형에서 사용자가 새로운 자료형을 추가할 수 있도록 한다.

 

[ 장점 ]

1. 이식성을 높여준다.

- 자신의 코드를 컴퓨터 하드웨어에 독립적으로 만들 수 있다.  ( typedef를 이용해 시스템에 따라 다른 자료형의 저장 공간을 고정시킬 수 있으며, 컴퓨터 시스템이 달라질 경우 typedef정의만 변경하면 된다. 컴파일러가 size.t와 같은 자료형을 만들어 사용하는 이유와 같다. )

2. #define과 차이점

- 결과는 비슷하나 typedef는 컴파일러가 직접 처리해 훨씬 좋은 방법이다.

( typedef float VECTOR [2]; ) ---> define으로 불가능

3. 문서화의 역할

- 주석을 붙이는 것과 같은 효과가 있다.