C Primer Plus (제5 판) 중국어 판 - 제1 4 장 구조 및 기타 데이터 형식

4542 단어 C 언어CPrimerPlus
14.1  예제 문제: 도서 목록 만 들 기
3 가지 중요 한 기술:
  • 구조의 구조 나 구 조 를 구축한다.
  • 이 변수의 구 조 를 따른다 고 성명 했다.
  • 구조 변수의 각 위 젯 에 대한 접근 을 가 져 옵 니 다.

  • 14.2  구조 성명 작성
    구조 성명 은 구조 가 어떻게 조합 되 는 지 를 묘사 하 는 주요 한 방법 이다.구조 설명 은 템 플 릿 이 라 고 합 니 다. 예 를 들 어:
    struct book {
            char title[41];
            char author[31];
            float value;
    };
  • 이 성명 은 두 글자 배열 과 하나의 float 변수 로 구 성 된 구 조 를 묘사 했다.이것 은 실제 데이터 대상 을 만 들 지 않 고 이러한 대상 을 구성 하 는 요 소 를 묘사 했다.
  • 먼저 키워드 struct 를 사용 하여 다음 구조 임 을 나타 낸다.다음은 구조 템 플 릿 을 여러 번 사용 하려 면 표시 가 필요 합 니 다. '북' 은 이 구조의 빠 른 표 시 를 참조 하 는 데 사 용 됩 니 다.이후 에 이렇게 성명 할 수 있다.
  • struct book library;    // library       book         
  • 다음은 괄호 로 묶 은 구조 구성원 목록 이다.모든 구성원 변 수 는 자신의 성명 으로 설명 하고 하나의 분점 으로 끝난다.
  • 끝 괄호 뒤의 분 호 는 구조 디자인 정의 의 끝 을 나타 낸다.

  • 구조 성명 은 모든 함수 의 밖 에 놓 을 수도 있 고 함수 정의 내부 에 놓 을 수도 있다.
    14.3  정의 구조 변수
    구 조 는 두 가지 의미 가 있 는데 그것 이 바로 구조 설계 와 구조 변수 이다.
    struct book library;    // library       book         

    이 명령 을 보면 컴 파일 러 는 변수 library 를 만 듭 니 다.컴 파 일 러 는 북 템 플 릿 을 사용 하여 이 변수 에 공간 을 분배 합 니 다. 이 저장 공간 들 은 하나의 이름 으로 library 가 결 합 됩 니 다.
    구조 변수의 성명 에서 struct book 이 일 으 키 는 역할 은 int 나 float 가 변수 성명 에서 의 역할 과 마찬가지 로 struct book 은 새로운 유형 이 되 었 다.
    성명 구조의 과정 과 구조 변 수 를 정의 하 는 과정 은 한 단계 로 합 칠 수 있 습 니 다.
    struct book {
            char title[41];
            char author[31];
            float value;
    } library;        //         

    14.3.1  구조 초기 화
    구조 변 수 를 초기 화 하려 면 배열 초기 화 와 유사 한 방법 을 사용 할 수 있 습 니 다. 괄호 로 묶 은 쉼표 로 구 분 된 초기 화 항목 목록 을 사용 하여 초기 화 할 수 있 습 니 다.
    struct book library = {
            "The Pirate and The Devious Damsel",
            "Rence Vivotte",
            1.95
    };

    14.3.2  접근 구조 구성원
    구조 구성원 연산 자 점 (.) 을 사용 하면 구조 중의 각 구성원 에 게 접근 할 수 있 습 니 다.예 를 들 어 library. value 는 library 의 value 부분 을 가리킨다.
    본질 적 으로 title, author, value 는 북 구조 에서 아래 표 시 된 역할 을 한다.구조 에서 각 구성원 은 자신의 변수 유형 을 가지 고 있 으 며 해당 하 는 데이터 형식 처럼 사용 할 수 있 습 니 다.
    14.3.3  구조 지정 초기 화 항목
    C99 지원 구조의 지정 초기 화 항목 은 배열 의 지정 초기 화 항목 과 문법 이 비슷 하고 구체 적 인 요 소 를 나타 내 는 방법 만 다 릅 니 다.
    //    book     value
    struct book library = {
            value = 25.99
    };
    //              
    struct book library = {
            .value = 25.99,
            .author = "James Broadfool",
            .title = "Rue for the Toad"
    };

    또한 특정 구성원 에 게 여러 번 초기 화 되 어 마지막 할당 이 유효 합 니 다.
    14.4  구조 배열
    14.4.1  선언 구조 배열
    struct book library[100];    //  library     100      ,      book     

     library 자 체 는 구조 명 이 아니 라 요소 유형 이 struct book 구조의 배열 명 입 니 다.
    14.4.2  표지 구조 배열 의 구성원
    표지 구조 배열 의 구성원: 구조 명 뒤에 점 연산 자 를 추가 한 다음 에 구성원 명 이다.예 를 들 어 library [0]. value 표지 의 첫 번 째 배열 요소 인 value 구성원.
    요약:
    library                 //book    
    library[2]              //    ,   book  
    library[2].value        //library[2] title  ,   char  
    library[2].value[4]     //title          

    14.5  내장 구조
    struct names {                //     
            char first[10];
            char last[10];
    };
    struct user {                  //     
            struct names handle;  //    
            char job[20];
            float income;
    };
    struct user fellow {          //     
            {"Huang","Jin"},
            "personality coach",
            12580.00
    };

    · 끼 워 넣 은 구조의 구성원 에 게 접근 하려 면 점 연산 자 를 두 번 만 사용 하 십시오.
    (fellow.handle).first        //   fellow   handle,    handle   first

    14.6  지향 구조 지침
    지향 구조의 지침 을 사용 하 는 이유:
  • 구 조 를 가리 키 는 지침 은 구조 자체 보다 조작 하기 쉽다.
  • 초기 C 실현 에서 구 조 는 매개 변수 로 함수 에 전 달 될 수 없 지만 구 조 를 가리 키 는 지침 은 가능 하 다.
  • 많은 기묘 한 데 이 터 는 다른 구 조 를 가리 키 는 지침 을 포함 하 는 구 조 를 사용 했다 는 것 을 나타 낸다.

  • 14.6.1  구조 포인터 설명 및 초기 화
    struct user *him; 

    먼저 키워드 struct, 그 다음 에 구조 태그 user, 그 다음 에 * 번 이 고 포인터 이름 이 뒤 따른다.이 성명 은 새로운 구 조 를 만 드 는 것 이 아니 라 포인터 him 가 기 존의 user 형식의 구 조 를 가리 킬 수 있다 는 것 을 의미 합 니 다.예 를 들 어 fellow 는 user 형식의 구조 이 고 다음 과 같다.
    him = &fellow;         //             ,    &   

    14.6.2  포인터 로 멤버 에 게 접근
    포인터 him 지향 구조 fellow, 두 가지 방법 으로 him 를 이용 하여 fellow 의 구성원 값 을 얻 을 수 있 습 니 다:
    him->income == fellow.income;         //      ->
    (*him).income == fellow.income;         //& *         

    14.7  함수 에 구조 정보 전달
     
     
     
     
     
     

    좋은 웹페이지 즐겨찾기