구조체란
01 사용자 정의 데이터 타입
02 관련 있는 데이터를 묶어서 처리할 수있는 자료구조
03 서로 다른 데이터 타입의 묶음
04 서로 다른 데이터 타입을 묶어서 처리할 수 있도록 사용자가 정의하는 데이터 타입
구조체 정의방법
1. 구조체의 멤버로 일반 변수뿐만 아니라 배열이나 포인터 선언 가능
2. 구조체를 정의하면 새로운 데이터형이 만들어짐
3. 구조체 정의 --> 메모리 할당의 의미는 아님
4. 구조체형 변수 선언 --> 메모리에 할당
5. 구조체의 크기는 모든 멤버들의 크기의 합보다 크거나 같음
6. 구조체 멤버 중 가능 큰 멤버의 크기를 기분으로 멤버 할당(Padding)
7. 구조체의 크기를 구하려면 sizeof 연산자를 이용함
구조체 선언
구조체 변수를 선언하면 구조체 변수가 가진 멤버들이 메모리에 선언된 순서대로 할당됨
구조체를 정의하면서 구조체 변수를 함께 선언할 수 있음
구조체를 정의하면서 변수를 함께 선언할 때는 태그명을 생략할 수 있음
초기화
01 선언 시 초기화는 배열 초기화와 동일
02 { } 안에 멤버들의 초기값을 순서대로 나열
03 { } 안에 지정한 초기값이 멤버의 개수보다 부족하면 나머지 멤버들은 0으로 초기화
04 멤버 접근 연산자"."을 이용한 초기화 가능
05 같은 구조체형의 변수들끼리는 서로 초기화나 대입이 가능함
06 구조체 간의 초기화 : 멤버 대 멤버 초기화
----> 동일한 멤버 간에 1:1로 복사해서 초기화
07 구조체 간의 대입 : 멤버 대 멤버 대입
<1> 구조체 멤버
구조체를 다른 구조체의 멤버로 사용 가능
<2> 구조체 배열
구조체를 배열로 선언하는 것이 가능
<3> 구조체 포인터
구도체 포인터로 구조체의 멤버에 접근할 때는 "->"간접 접근 연산자를 사용
구조체 이해
● 구조체는 서로 다른 데이터를 묶어서 처리하기 용이한 자료구임
● 구조체는 먼저 정의하고 변수를 선언하여 사용함
● 구조체 선언 시 구조체명 앞에 struct라는 키워드를 사용해야 함
● 구조체 변수는 모든 데이터 타입을 사용할 수 있음
● 구조체는 선언 시 초기화하는 것이 가능함
● 선언 시 초기화에는 배열과 동일한 방법으로 초기화함
● 구조체도 필요에 따라 구조체 배열을 선언하는 것이 가능함
● 구조체 포인터로 구조체 멤버에 접근할 때는 간접 접근 연산자->를 사용함