이번에는 코딩도장 Unit57과 Unit58에 설명되어 있는 열거형 사용과 자료형 변환에 대해 정리해보겠습니다.
열거형 사용 | enum사용 switch문 결합 사용 for문 결합 사용 |
자료형 변환 | 기본 자료형 변환 포인터 자료형 변환 구조체 자료형 변환 |
열거형 사용
열거형은 정수형 상수에 이름을 붙여 개수가 많더라도 편리하게 해 주도록 합니다. enum키워드를 사용하며 enumeration의 약자입니다.
enum 열거형이름 {
값1 = 초깃값,
값2,
값3
};
[enum 열거형이름 변수이름;]으로 변수를 선언해야 사용이 가능하며 아래에 내려오는 값들은 1씩 증가하여 자동으로 초기값이 할당됩니다. 초기값을 할당하지 않으면 0부터 시작하는 규칙이 있습니다.
열거형의 값들은 대문자만 이용하는 경우가 많고 단어 사이에는 _를 사용하여 구분하며 초기값을 일일이 설정하여 할당할 수 있습니다.
typedef로 별칭을 지정하고 익명 열거형으로 정의할 수 있는데 세미콜론(;) 앞에 열거형 별칭을 이용하면 됩니다. 열거형 별칭을 사용하면 변수를 사용할 때 [열거형별칭 변수이름;]으로 사용하면 됩니다. 별칭 대신 변수로 선언하여 사용하여도 됩니다.
열거형은 switch분기문을 사용하여 특정 값일 때 코드를 실행하도록 할 수 있습니다. 또한, for문을 이용하여 해당 값들을 반복하여 초기값들을 확인할 수 있도록 할 수 있습니다.
자료형 변환
자료형 변환은 표현 범위가 넓은 쪽으로 저장하면 자동으로 변환되어 저장됩니다. 이것을 형 확장이라 하며, 반대인 경우인 형 축소 시 경고가 나오게 되는데 경고가 나오지 않도록 만드는 것을 형 변환(type conversion, type casting, 타입 캐스팅)이라고 합니다.
강제로 형 변환하는 것은 명시적 형 변환(explicit type conversion)이라 부르기도 합니다. 아래와 같이 자료형을 지정하여 명시적 자료형 변환을 시킬 수 있습니다.
(자료형)변수
(자료형)값
포인터의 자료형을 변환할 때는 [(자료형 *)포인터] 형식으로 해주면 됩니다. 대신 리틀 엔디언 방식으로 저장되기에 크기가 작은 자료형으로 가져오게 되면 원하는 값을 가져오지 못하게 됩니다. 역참조 시 [*(자료형 *)포인터]로 해주면 됩니다.
여기서 void 포인터는 자료형이 정해져 있지 않아 역참조 연산을 사용할 수 없지만, void포인터를 다른 자료형으로 변환하면 역참조가 가능해집니다.
자료형 변환을 주로 구조체 포인터를 변환할 때 사용하는데 struct와 구조체 이름 뒤에 *을 붙여 괄호로 묶어주면 됩니다.
(struct 구조체이름 *)포인터
((struct 구조체이름 *)포인터)->멤버
구조체 포인터는 [(구조체별칭 *)포인터, ((구조체별칭 *)포인터)->멤버, (구조체포인터별칭)포인터, ((구조체포인터별칭)포인터)->멤버]를 사용하여 변환할 수 있습니다.
'TeamH4C_ProjectH4C > 프로그래밍 언어' 카테고리의 다른 글
[TeamH4C_C언어] 포인터 연산 (0) | 2021.04.11 |
---|---|
[TeamH4C_C언어] 구조체 추가 정리(비트 필드) (0) | 2021.04.11 |
[TeamH4C_C언어] 구조체와 공용체 사용 (0) | 2021.03.28 |
[TeamH4C_C언어] 문자열과 구조체 (0) | 2021.03.14 |
[TeamH4C_C언어] 포인터를 활용한 문제 (0) | 2021.03.06 |