구조체
서로 다른 성격의 데이터를 그룹으로 묶어 새로운 의미를 부여하는 방법
예를 들자면
정보보호학과 학생들의 성적이 공개되었을 때 강의 별 학점은 모두 데이터이다.
성적 결과를 확인한 C프로그래밍 교수는 자신의 강의를 들은 학생들의 성적이 중요할 것이다.
따라서 C프로그래밍 수업의 성적을 기준으로 데이터를 그룹으로 묶어 관리한다.
그렇지만 학생들은 자신이 들은 강의 성적만을 묶어서 그룹으로 관리할 것이다.
이때 구조체를 사용한다고 할 수 있다. (너무 구구절절..)
구조체는 배열과 달리 다른 자료형이어도 묶어 사용할 수 있다는 장점이 있다.
typedef (type define)
긴 자료형을 define문처럼 내가 정해둔 이름으로 (변수는 아니지만 변수처럼) 사용할 수 있는 문법
ex) typedef unsigned short int USS; //unsigned short int형을 USS로 선언
USS temp; //unsigned short int 대신 사용 가능
장점 -> 데이터 크기에 변화가 생겼을 때 쉽게 대처 가능 define문의 장점과도 일치
( 내가 선언한 이름만 변경하면 되니까 )
typedef 설명하는 이유는 밑에 ~.~
구조체
struct [구조체 명]
{
자료형1 변수 명1;
자료형2 변수 명2;
'
'
'
}
근데 구조체를 typedef와 함께 쓰면 매번 struct 안 적어도 변수들을 편리하게 선언 가능
이때 선언한 Data는 변수이다. (=struct Student Data;)
구조체로 선언한 변수의 요소 사용
변수의 요소 사용하려면 .(요소지정연산자) 사용
구조체로 선언한 변수 초기화 방법
배열과 같이 중괄호 사용하면 된다.
게임과 관련된 예시를 들자면
적과 관련된 정보들을 구조체에 담을 때
ex : 적의 x좌표
ey : 적의 y좌표
state : 적의 상태 값(나타났다 사라졌다 하는거 bool형)
을 구조체에 담고 .으로 불러내서 사용(위의 사진처럼 사용~~)
지금은 구조체 사용하지 않아서 변수명도 약간 햇갈리고 그런데 프로그램이 커지고 코드가 길수록
구조체로 프로그램의 연관성을 주면 오류도 더 줄일 수 있고 더 간결하게 프로그래밍 할 수 있을 것 같다.
참고)
책 http://www.yes24.com/Product/Goods/35094862
https://www.youtube.com/watch?v=FPrhwGR4B2s
댓글