* 구조체(Data structure)란 ?
프로그램의 규모가 커진다면, 변수를 계속해서 선언하는것은 비효율적이다. 이때 구조체를 사용하면 좀 더 효율적이다.
예를들어서, 100명의 사람의 인적사항을 저장하는 프로그램이라면, 100명 * (이름 , 나이, 주소) 까지 300백개의 변수가 필요하다. 구조체를 선언한다면, 구조체 속에 이름, 나이, 주소 3가지만 선언하고, 사람단위로 정보를 처리 할 수 있다.
* 구조체의 선언
기본적인 선언 방법
- 구조체는 위와 같이 선언한다.
- Person : 구조체 이름
- name, age, address : 구조체의 멤버 라고 한다.
- 구조체는 보통 main함수 밖에 정의한다. (전역적으로 사용하기 위함이다)
구조체를 이용하여 2명의 인적사항 생성하기.
p1, p2는 "구조체 변수"이다. 그리고 구조체 속의 요소에 접근할때는 <.멤버이름>으로 접근하면 된다.
# Typedef를 이용한 구조체 선언
typedef 는 자료형의 별칭을 만드는 기능이다. 구조체를 만들때도 사용하지만, 다른 모든 자료형에도 사용 가능하다.
typedef <자료형> <별칭> 으로 사용 가능하다.
typedef로 구조체 선언하기
- struct Person p1; 대신, 별칭을 사용하여 p_list p1; 으로 구조체를 선언할 수 있다.
- 이때, typedef와 별칭(t_list)은 사용하되 구조체의 이름(Person)을 적지 않고 구조체를 선언한다면, 익명구조체 라고 한다.
# 구조체 포인터
- 구조체 포인터의 경우에는 <.멤버이름>이 아닌, <구조체->멤버>로 접근하면 된다. (->는 화살표 연산자 라고 한다)
- 문자열 멤버에는 =(할당연산자) 사용이 안되므로, strcpy함수를 이용하여 문자열을 넣어주면 된다.
# 구조체 멤버가 포인터인 경우
접근하려는 멤버가 포인터인 경우에는 참조연산자 *를 붙여줘야한다.