구조체는 왜 사용하는가?
코드를 짜게 될때 지금까지 우리가 아는 상식으론 여러 정보를 입력받고 싶다면 받고싶은 정보마다 배열을 짜야합니다. 이럴경우 변수도 너무 많이 선언해야하고 메모리도 너무 많이 차지하게 됩니다. 따라서 이런 문제를 해결하고자 구조체를 이용합니다.
구조체 선언과 이용

구조체는 위의 코드 사진처럼
struct 구조체 이름 {
안의 인자값;
안의 인자값;
};
이런 형식으로 선언하게 된다. 또한 사용할때는

위의 사진처럼 선언해줄때처럼 struct 구조체 이름을 쓴 후 사용할 구조체 변수를 써준다. 또한 안의 구조체 인자값에 접근하기 위해 '.' 을 사용해준다. 포인터 변수도 선언해줄 수 있는데 그것은 다음에 다루도록 하겠다.
struct 선언해준 구조체 이름 구조체 변수 이름;
구조체 변수.접근할 인자값;
typedef
위에서 구조체의 선언법을 알아봤는데 선언해줄때마다 [struct 구조체명 변수명] 형식을 치기엔 너무 귀찮다고 표현할 수 있겠습니다. 이를 해결하기위해 있는것이 typedef 입니다. typedef 를 이용하면 새로운 구조체 별명같은걸 정해주고 앞으로 변수를 선언할때 struct 를 매번 써주는 번거로운 일을 하지 않아도 됩니다.

typedef struct 구조체명{
인자값;
인자값;} 구조체별명;
이런 구조로 선언해주게 되며 변수선언을 해주게 될때 구조체 별명을 이용해서 선언해주게 되면 됩니다.

구조체 초기화
앞에서 말했듯이 구조체는 '.' 을 이용해서 하나하나 접근하면서 값을 초기화 해줄 수 있습니다. 하지만 또 다른 방법으로는 한번에 구조체의 모든 값들을 줄 수 있는 방법이 있습니다.
typedef struct Aclass {
int age;
char name;
int birth;
}classname;
이런 구조체가 있다고 했을때 밑의 방식으로 선언해줄 수 있습니다. 이렇게 선언해주게 되면 차례대로 110 이 age에 들어가고 name 에 B 가 들어가고 birth 에 20050407 이 들어가게 됩니다.
classname sum;
sum = { 110,'B', 20050407 };
printf("%d %c %d", sum.age, sum.name, sum.birth);

또한 여기서 알아놓을 것이 있는데 구조체는 구조체 변수를 선언해주어 초기화를 해주기 전까지는 메모리 할당을 하지 않습니다 .
'C,C++' 카테고리의 다른 글
도난 경보장치(아두이노 프로젝트 기록) (0) | 2021.12.30 |
---|---|
2167번 2차원 배열의 합 (0) | 2021.07.21 |
11047번 동전0 (0) | 2021.06.19 |
10773번 제로 C (0) | 2021.06.15 |
풀어보려 시도 해본 문제들 (백준 : 1009번, 14647번, 2136번) (0) | 2021.06.09 |
구조체는 왜 사용하는가?
코드를 짜게 될때 지금까지 우리가 아는 상식으론 여러 정보를 입력받고 싶다면 받고싶은 정보마다 배열을 짜야합니다. 이럴경우 변수도 너무 많이 선언해야하고 메모리도 너무 많이 차지하게 됩니다. 따라서 이런 문제를 해결하고자 구조체를 이용합니다.
구조체 선언과 이용

구조체는 위의 코드 사진처럼
struct 구조체 이름 {
안의 인자값;
안의 인자값;
};
이런 형식으로 선언하게 된다. 또한 사용할때는

위의 사진처럼 선언해줄때처럼 struct 구조체 이름을 쓴 후 사용할 구조체 변수를 써준다. 또한 안의 구조체 인자값에 접근하기 위해 '.' 을 사용해준다. 포인터 변수도 선언해줄 수 있는데 그것은 다음에 다루도록 하겠다.
struct 선언해준 구조체 이름 구조체 변수 이름;
구조체 변수.접근할 인자값;
typedef
위에서 구조체의 선언법을 알아봤는데 선언해줄때마다 [struct 구조체명 변수명] 형식을 치기엔 너무 귀찮다고 표현할 수 있겠습니다. 이를 해결하기위해 있는것이 typedef 입니다. typedef 를 이용하면 새로운 구조체 별명같은걸 정해주고 앞으로 변수를 선언할때 struct 를 매번 써주는 번거로운 일을 하지 않아도 됩니다.

typedef struct 구조체명{
인자값;
인자값;} 구조체별명;
이런 구조로 선언해주게 되며 변수선언을 해주게 될때 구조체 별명을 이용해서 선언해주게 되면 됩니다.

구조체 초기화
앞에서 말했듯이 구조체는 '.' 을 이용해서 하나하나 접근하면서 값을 초기화 해줄 수 있습니다. 하지만 또 다른 방법으로는 한번에 구조체의 모든 값들을 줄 수 있는 방법이 있습니다.
typedef struct Aclass {
int age;
char name;
int birth;
}classname;
이런 구조체가 있다고 했을때 밑의 방식으로 선언해줄 수 있습니다. 이렇게 선언해주게 되면 차례대로 110 이 age에 들어가고 name 에 B 가 들어가고 birth 에 20050407 이 들어가게 됩니다.
classname sum;
sum = { 110,'B', 20050407 };
printf("%d %c %d", sum.age, sum.name, sum.birth);

또한 여기서 알아놓을 것이 있는데 구조체는 구조체 변수를 선언해주어 초기화를 해주기 전까지는 메모리 할당을 하지 않습니다 .
'C,C++' 카테고리의 다른 글
도난 경보장치(아두이노 프로젝트 기록) (0) | 2021.12.30 |
---|---|
2167번 2차원 배열의 합 (0) | 2021.07.21 |
11047번 동전0 (0) | 2021.06.19 |
10773번 제로 C (0) | 2021.06.15 |
풀어보려 시도 해본 문제들 (백준 : 1009번, 14647번, 2136번) (0) | 2021.06.09 |