1. 구조체 목적

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

2. 구조체 사용 방법 (기본)

(1) 구조체 정의 및 변수 선언

구조체는 아래처럼 struct 키워드로 정의한다.

struct [구조체이름] {
    자료형 멤버이름1;
    자료형 멤버이름2;
    ...
};

////////////////////// 예시 ////////////////////////

structmember {			// 구조체 이름 : member
char	number[20];			// 구조체 멤버 1
char	name[20];		// 구조체 멤버 2
int		age;			// 구조체 멤버 3
};

위처럼 정의한 구조체는 이후 int나 char형, unsigned int 등의 자료형처럼 struct [구조체이름] 형태로 자료형 자리에 붙여준다. 구조체를 변수로 선언하는 방법은 아래와 같다.

struct [구조체이름] [변수이름];

//////////////// 예시 ////////////////

structmember m1;
// "int i;" 와 비슷한 형태. int 대신 struct member라는 것이 들어갔다고 생각하자.

위처럼 선언한 구조체 변수에 접근하는 방법은 다음과 같다.

strcpy(m1.number, "202012345");
strcpy(m1.name, "몽구");
m1.age = 20;

// 온점(.)으로 구조체 멤버에 접근하여 값 할당
// 참고로 문자열은 할당이 안되므로 strcpy, strncpy, strlcpy 등을 이용하여 할당.

(2) typedef로 struct키워드 없이 구조체 선언하기

구조체 변수를 선언할 때 일일이 struct 키워드를 붙이는 것보다 typedef로 구조체를 정의하면서 별칭을 지어주자. 방법은 아래와 같다.

typedef struct [구조체이름] {
    자료형 멤버1 이름;
    자료형 멤버2 이름;
    ...
} 구조체별칭;

////////////////////// 예시 //////////////////////

typedef struct_member {
	char	number[20];
	char	name[20];
	int		age;
} member;
// 이후 struct _member [변수이름]이 아닌, member [변수이름]으로 사용 가능.

그리고 42서울 라피신 과정에서의 norminette 기준에 따르면 typedef로 구조체를 정의해줄 때 아래와 같은 규칙을 지켜줘야 한다.

typedef structs_[구조체이름]
{
    자료형 멤버1 이름;
    자료형 멤버2 이름;
    ...
} t_[구조체별칭];

///////////////////// 예시 /////////////////////

typedef structs_member
{
	char	number[20];
	char	name[20];
	int		age;
}		t_member;
  1. 구조체 이름 앞에는 s_ 를, 구조체 별칭의 이름 앞에는 t_ 를 붙여준다.

  2. typedef와 struct 사이는 스페이스 하나로 채워준다.

  3. typedef의 두 인자 (struct와 구조체이름) 사이에 탭을 써준다.

  4. 구조체이름과 구조체 별칭의 정렬을 맞춰준다.

  5. 멤버들의 이름의 정렬을 맞춰준다.