구조체

2015. 9. 20. 14:11알고리즘 문제풀기/코딩

구조체란 여러 변수를 묶어 하나로 쓰는 것이다.
다음 그림을 보자.

구조체를 만들 때는

struct
구조체이름 {
    변수형 내부이름;
    변수형 내부이름;
...

    변수형 내부이름;
};

이런 식으로 선언한다.
안쪽의 변수형 내부이름;은 평소에 변수를 선언할 때처럼 쓰면 된다.
내부이름
이 어떤 의미인지는 곧 알 수 있다.

구조체는 '설계도'와 같은 존재이다.
설계도가 있어도 그 설계도로 집을 지어야 비로소 그 안에서 살 수 있듯이,
구조체를 가지고 변수를 만들어야 비로소 그 값에 접근할 수 있다.
이 때 만들어진 변수는 당연히 구조체에 설계한 그대로 구조가 만들어진다.

구조체 이름이 asdf라면, 그 구조체를 가지고 x라는 이름의 변수를 만드려면 asdf x; 라고 선언하면 된다. int a; 와 똑같이 생각하면 된다.
즉 구조체도 intchar처럼 변수형의 개념이다. 심지어 구조체 내부에 구조체를 넣을 수도 있다.
var라는 구조체 변수의, x라는 내부이름을 갖는 변수에 접근할 때는 var.x처럼 . 을  사용한다.
처음에 구조체를 만들면 그 안의 변수들에는 흔히 말하는 '쓰레기 값'이 담겨있다. 그래서 쓰기 전에 꼭 초기화를 해주어야 한다.
물론 구조체로 배열도 만들 수 있다.

a var[11];
for(int i=1;i<=10;++i){
    var[i].x=i;
    var[i].y=i+1;
}

구조체 대신 각각의 변수를 잡으면 될텐데 구조체를 사용하는 이유는 뭘까? 바로 편한 코딩을 위해서다!
여러 변수를 통째로 대입하고 싶을 때 x=y; 한 줄로 끝낼 수 있다.
또한 구조체를 가지고 정렬을 할 수 있다.