반응형
구조체
- 하나 이상의 변수(포인터와 배열 포함)를 묶어서 새로운 사용자정의 자료형
- 실존하는 정보를 데이터화 하는 추상화 작업
※ class와의 차이점은 접근지시자를 사용하지 않을시 struct는 public, class는 private으로 설정된다.
//type 1
struct example
{
int a;
char arr[10];
};
void main()
{
struct example exam = { 10, "test" };
printf("%d, %s", exam.a, exam.arr);
//결과 10, test
}
typedef 선언
- typedef는 기존의 자료형의 이름에 새 이름(별명)을 부여하는 것을 목적으로 선언된다.
※ typedef int INT : int의 또 다른 이름 INT를 부여.
//type 2
struct example
{
int a;
char arr[10];
};
typedef struct example Example;
//type 3
typedef struct example
{
int a;
char arr[10];
}Example;
void main()
{
Example exam = { 10, "test" };
printf("%d, %s", exam.a, exam.arr);
//결과 10, test
}
※ type 2와 같이 구조체 선언 후 typedef로 지정하는 법과 type 3과 같이 선언과 동시에 지정하는 방법이 있다.
구조체 변수와 포인터
- 기존 포인터와 선언 형식 및 접근의 방법이 다르지 않다.
typedef struct example
{
int a;
char arr[10];
}Example;
void main()
{
Example exam = { 10, "test" };
Example* exptr = &exam;
printf("%d, %s", (*exptr).a, (*exptr).arr);
//결과 10, test
}
※ 접근을 위해 포인터 변수를 대상으로 *연산을 하는것은 동일하다. 다만 구조체 포인터이기 때문에 변수에 접근하기위해 .연산을 추가해야한다.
※ *연산과 .연산을 하나의 ->연산으로 대체가 가능하다.
typedef struct example
{
int a;
char arr[10];
}Example;
void main()
{
Example exam = { 10, "test" };
Example* exptr = &exam;
printf("%d, %s", exptr->a, exptr->arr);
//결과 10, test
}
반응형