티스토리 뷰
구조체는 구조체 변수를 초기화할 수 있다?
구조체 변수는 일반 변수처럼 초기화를 할 수 있습니다. 단, 초기화를 할때는 반드시 중괄호로 묶습니다.
예를들어 한번 알아보도록 할게요
전 포스팅에서 다룬 내용처름 일단 코딩을 해 보았습니다.
그러니 이렇게 출력이 되네요
이번에는 구조체의 변수를 초기화 해보겠습니다.
아주 잘~출력이 되네요
이처럼 구조체 변수는 초기화가 가능하다는 것을 알 수 있습니다.
구조체는 구조체 변수를 복사할 수 있다?
구조체 변수는 서로 복사가 가능합니다. 그치만 안되는 것이 있습니다.
-->덧셈, 뺄셈, 곱셈, 나눗셈 과 같은 연산들은 불가능 합니다. 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의 멤버변수에 해당되는놈 입니다.
'허접한 프로그래밍 > C언어' 카테고리의 다른 글
구조체란 무엇인가? (2) | 2013.12.09 |
---|---|
배열이란? (0) | 2013.12.09 |
[기말고사 대비] 포인터 함수 이용 (0) | 2013.12.09 |
[기말고사 대비]포인터 변수의 사용예 part2 -기초- (0) | 2013.12.09 |
[기말고사 대비]포인터 변수의 사용예 part1 -기초- (0) | 2013.12.09 |