C

구조체(Struct)

구조체 목적

구조체는 관련 정보를 하나의 의미로 묶을 때 사용

구조체 사용 방법

1. struct 키워드로 정의

  • struct 키워드 사용하여 선언
struct [구조체이름]{
    자료형 맴버이름1;
    자료형 맴버이름2;
    ...
};

//예시
struct s_member { //구조체 이름 : member
    char number[10]; //구조체 맴버1
    char name[20]; //구조체 맴버2
    int age; // 구조체 맴버3
};

2. typedef 키워드로 정의

  • struct 없이 선언할 수있음
struct [구조체이름]{
    자료형 맴버이름1;
    자료형 맴버이름2;
    ...
}구조체 별칭;

//예시
struct s_member { //구조체 이름 : s_member
    char number[10]; //구조체 맴버1
    char name[20]; //구조체 맴버2
    int age; // 구조체 맴버3
}      t_member;

struct s_memeber [변수 이름]이 아닌, t_memeber [변수이름]으로 사용가능

구조체 포인터

선언 방법)

1. struct 키워드로 정의 했을때

struct 키워드와 구조체 이름을 사용하여 구조체 포인터를 선언한다.

malloc을 해줄 때 struct와 구조체 이름을 함께 써줘야 한다는 것을 명심해야한다.

struct member *m1 = malloc(sizeof(struct s_member));

2. typedef 키워드로 정의했을때

별칭이름을 사용하여 구조체 포인터를 선언한다.

t_member *m1 = malloc(sizeof(t_member));

주의할 점은 포인터 변수니까 다른 자료형과 마찬가지로 *(애스터리스크)를 붙여준다.

사용방법)

구조체 포인터맴버에 접근할 때에는 화살표 연산자: (→)를 사용해야한다

//struct 키워드 , typedef 키워드 모두 사용방법은 동일

struct s_member {
    char number[10]; 
    char name[20]; 
    int age; 
}      t_member;

int main(void)
{
    t_member m1 =  malloc(sizeof(t_member));

    strcpy(m1 -> number, "20201234");
    strcpy(m1 -> name, "홍길동");
    m1 -> age = 20;

    free(m1);
    return (0);
}

참고)

구조체 맴버에 접근할때는 . (온점)을 이용하여 접근했다.

하지만, 구조체 포인터의 맴버에 접근할때는 화살표연산자를 사용한다.

구조체 포인터에서 맴버에 접근할때 온점을 사용하고 싶다면 괄호와 역참조를 사용해줘야된다.

m1 -> age; //화살표 연산자로 맴버에 접근
(*m1).age; //구조체 포인터를 역참조한 뒤, 온점(.)으로 맴버에 접근

 

참고링크)

구조체 정리

 

구조체 정리

1. 구조체 목적 구조체는 관련 정보를 하나의 의미로 묶을 때 사용한다. 2. 구조체 사용 방법 (기본) (1) 구조체 정의 및 변수 선언 구조체는 아래처럼 struct 키워드로 정의한다. struct [구조체이름] {

mong9data.tistory.com

 

'C' 카테고리의 다른 글

C - 컴파일 과정(전처리, 컴파일, 어셈블, 링크)  (0) 2020.10.18