반응형

구조체

- 하나 이상의 변수(포인터와 배열 포함)를 묶어서 새로운 사용자정의 자료형

- 실존하는 정보를 데이터화 하는 추상화 작업

  ※ 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
}

 

반응형

'Stack > C' 카테고리의 다른 글

C 중간 활용 : 학생 관리 시스템 만들기  (0) 2021.08.24
C 파일 입출력  (0) 2021.08.24
C 동적할당  (0) 2021.08.22
C 포인터, 배열  (0) 2021.08.22

+ Recent posts