프로그래밍[Univ]/C언어

[C언어] 구조체 structure 2번째

Cloud Travel 2008. 7. 14. 13:45
1. 구조체의 변수의 초기화

 구조체의 변수를 초기화 하려면 구조체 변수를 선언할 때
 각 멤버에 대응하는 초기값을 { }안에 나열한다.
 ex)
   struct time {
        int hour;
        int min;
        int sec;
   } ;
   struct time first = { 11, 3, 10 }
   > hour = 11, min = 3, sec = 10 이 들어간다.
 
2. 구조체 간의 복사

 동일한 구조체 형으로 선언된 구조체 변수는
 구조체 단위로 모든 멤버들의 값을 복사할 수 있다.
 구조체 변수 단위로 대입연산자('=')를 사용하면 멤버들이 1:1로 대응되어
 값들이 한꺼번에 옮겨진다.
 ex)
 struct time {
        int hour;
        int min;
        int sec;
 } ;
 struct time first = {11,3,10};
 struct time second;
 second = first;
 > first hour = 11 min = 3 sec = 10의 값이 second의 hour =11 min = 3 sec = 10 에 대입

3. 중첩구조체

 구조체 안에는 기본 자료형뿐만 아니라 구조체도 멤버로 가질수 있다.
 ex)
 struct subjects{
    int kor;
    int eng;
    int mat;
 };
 struct sung{
    char name[20];
    struct subjects course;
    int tot;
    float avg;
 };
 ex의 메모리 할당은 다음과 같다.
사용자 삽입 이미지

 중첩된 구조체의 특정 멤버를 참조하기 위해서는 도트연산자를 여러번 사용해야 된다.
 ex) kor 에 85 넣기
 struct subjects{
    int kor;
    int eng;
    int mat;
 };
 struct sung{
    char name[20];
    struct subjects course;
    int tot;
    float avg;
 };
 sung data;
 data.course.kor = 85;