티스토리 뷰

구조체는 구조체 변수를 초기화할 수 있다?


구조체 변수는 일반 변수처럼 초기화를 할 수 있습니다. 단, 초기화를 할때는 반드시 중괄호로 묶습니다.


예를들어 한번 알아보도록 할게요



전 포스팅에서 다룬 내용처름 일단 코딩을 해 보았습니다.



그러니 이렇게 출력이 되네요




이번에는 구조체의 변수를 초기화 해보겠습니다.


아주 잘~출력이 되네요


이처럼 구조체 변수는 초기화가 가능하다는 것을 알 수 있습니다.



구조체는 구조체 변수를 복사할 수 있다?


구조체 변수는 서로 복사가 가능합니다. 그치만 안되는 것이 있습니다.

-->덧셈, 뺄셈, 곱셈, 나눗셈 과 같은 연산들은 불가능 합니다. ONLY 대입만 가능!


구조체는 중첩으로 사용할 수 있습니다.

이를 바로 중첩 구조체 라고 합니다.

중첩 구조체는 구조체 내에 또 다른 구조체가 포함되어 있따는 의미 입니다.


중첨 구조체는 초기화할 수 있다?

위에서 구조체 변수는 초기화 할 수 있다고 이야기를 하였습니다. 

중첩 구조체도 마찬가지 입니다. 중첩 구조체도 초기화가 가능합니다.



구조체는 typedef를 이용하여 구조체를 재정의할 수 있다

이것에 대한 설명을 하기 전에 typedef가 무엇인지에 대해 설명하도록 하겠습니다.


typedef int mytype;


자료형 재정의 키워드 : typedef -> 기존 자료형을 새 이름으로 재정의하는 typedef 키워드를 지정하는 것

기존 자료형 : int

재정의 하는 NEW 이름 : mytype


typedef는 새 이름으로 재정의 한다는 것을 알아 보았습니다. 

즉, 구조체에도 typedef를 사용해서 새 이름을 부여할 수 있습니다.


예제를 통하여 알아보도록 할게요







순서 ① score라는 구조체를 선언해줍니다.


순서 ② 멤버변수로 double형인 math, english, average를 선언을해 주었습니다.


순서 ③ typedef를 사용하므로써 SCORE라는 이름으로 구조체를 재정의해줍니다.





이 구문은 현재 중첩 구문체 입니다.


순서 ① student 라는 이름을 가진 구조체를 선언을 해주어 멤버변수로는 int형 no를 선언해 줍니다.


순서 ② SCORE라고 typedef로 재정의를 해준 구조체의 멤버변수를 s라고 지정해 줍니다.

--> 이것은 중첩 구조체이며 추후에 student구조체를 호출할때 score구조체의 멤버변수도 호출할 수 있습니다.




typedef로 student 구조체를 STUDENT라고 재정의 해 줍니다.

이제부터 student구조체의 새 이름은 STUDENT입니다.




새로 재 정의한 STUDENT의 구조체 변수를 stu라고 정의하고 구조체 변수를 초기화 시켜줍니다.


STUDENT stu = {201238201,{100, 80, 0}};


일단, student구조체에 int no; 가 있으니 201238201 이라고 입력하고 그다음 { } 가 또 쳐져 있을 것 입니다.


이것은 중첩 구조체의 score의 멤버변수에 해당되는놈 입니다.








Comments