구조체
구조체 : 하나 이상의 변수를 묶어서 새로운 자료형을 정의하는 도구
<구조체 정의>
struct point
{
int xpos;
int ypos;
};
<구조체 변수 선언>
struct point pos;
구조체 변수를 선언과 동시에 초기화할 때에는 중괄호를 사용
ex)
struct person man={"merona", "010-1234-1234", 20};
포인터 변수를 구조체의 멤버로 선언
*구조체 변수의 주소 값 = 구조체 변수의 첫 번째 멤버의 주소 값
typedef 선언
기존에 존재하는 자료형의 이름에 새 이름을 부여하는 것
보통 typedef로 정의되는 자료형의 이름은 대문자로 시작
typedef name1 name2;
name1의 또 다른 이름 name2를 선언
ex)
typedef struct point
{
int xpos;
int ypos;
} Point;
<구조체 이름 생략> //흔하게 사용
typedef struct
{
char name[20];
char phoneNum[20];
int age;
} Person;
구조체 변수를 대상으로 Call-by-reference
구조체 변수를 대상으로 가능한 연산
- 대입연산, &연산, sizeof 연산
구조체 변수의 연산
공용체
<공용체 정의>
typedef union ubox
{
int mem1;
int mem2;
double mem3;
} UBOX;
<변수선언의 경우>
구조체 = 구조체를 구성하는 멤버 각각에 할당
공용체 = 그 중 크기가 가장 큰 멤버의 변수만 하나 할당되어 이를 공유
ex)
13행 - 상위 4바이트의 메모리 공간에 20을 저장
14행 - mem2는 int형으로 상위 4바이트의 메모리 공간을 참조하게 됨
근데 앞에 13행에서 이 공간에 20을 저장했으므로 20을 출력
16행 - mem3에 실수 저장. 결과적으로 13행을 통해 저장된 값을 덮어쓰게됨
17, 18행 - 16행에서 실수를 저장하면서 덮어써버렸기 때문에,
상위 4바이트를 읽어서 출력하면 알 수 없는 값이 출력됨
즉, 메모리 공간을 공유함
열거형
<열거형 정의>
enum syllable
{
q=1, w=2, e=3, r=4
};
q는 정수 1을 의미하는 상수로 정의함
이 값은 syllable형 변수에 저장이 가능함
<변수선언>
enum syllable tone;
열거형의 유용함 : 둘 이상의 연관이 있는 이름을 상수로 선언함으로써 프로그램의 가독성을 높임
'언어 > C' 카테고리의 다른 글
[C] 메모리 관리 & 동적 할당 (0) | 2019.01.09 |
---|---|
[C] 파일 입출력 (0) | 2018.12.07 |
[C] 문자 & 문자열 관련 함수 (0) | 2018.11.15 |
[C] 도전프밍_3 (&난수) (0) | 2018.11.15 |
[C] 함수 포인터와 void 포인터 (0) | 2018.11.13 |
댓글