C 언어 구조 유형

C 언어 구조 유형
이 글 은 개인 이 C 언어 구조 유형 을 배 우 는 과정 에서 의 필기 와 정 리 를 위해 부족 한 점 이 있 으 면 신의 지적 을 바 랍 니 다.
1. 매 거 유형
⭐기호 상 계량 화: 구체 적 인 숫자 가 아 닌 기호 로 프로그램의 숫자 를 나타 내 는 것 은 프로그램 이 간결 하고 읽 기 편리 하 다.
const int red = 0;
const int yellow = 1;
const int green = 2;

매 거 진 형식 은 상수 정 의 를 더욱 편리 하 게 할 수 있 습 니 다.
매 거 유형: 매 거 는 사용자 가 정의 하 는 데이터 형식 으로 키워드 enum 으로 다음 과 같은 문법 으로 표시 합 니 다.
enum        {  0,...,  n};
enum COLOR {RED. YELLOW, GREEN};

두 번 째 줄 문 구 는 세 개의 상수 를 만 들 고 그 값 은 순서대로 배열 합 니 다. 즉, RED = 0 입 니 다.YELLOW = 1; GREEN = 2;(초기 화 할 때 값 을 부여 할 수도 있 습 니 다)
배열 할 수 있 는 상수 값 이 필요 할 때 매 거 진 유형 을 정의 하 는 의 미 는 이러한 상수 값 이름 을 주 는 것 이다.
  • 매 거 량 은 값 으로 할 수 있다
  • 매 거 진 유형 은 enum 을 유형 으로 할 수 있다.
    enum COLOR {RED. YELLOW, GREEN};
    
    void function(enum color c){...};
    
    int main(){
        enum corlor a = RED;
    }
    
  • 컴 파일 할 때 실제 정수 로 내부 연산 과 외부 입 출력 을 수행 합 니 다
  • 매 거 진 장점: 의미 적 으로 배열 한 이름 이 있 으 면 매 거 진 정 의 는 const int 로 정의 하 는 것 보다 편리 합 니 다.매 거 진 것 이 매크로 보다 더 좋 습 니 다. int 형식 이 있 기 때 문 입 니 다.
    2. 구조 유형
    구조 유형 (구조 체) 은 하나의 유형 으로 여러 개의 키 유형의 집합 을 나 타 낼 수 있 는데 그 중에서 모든 키 유형 은 이 구조의 구성원 이 된다.
    구조 형식의 성명 과 사용:
    struct data {
    	type name0;		//type:  ; name:   
        type name1;
        ...
    };
    
    struct data a;
    

    상기 정의 방식 은 사용 할 때 편 의 를 위해 type: def 를 사용 하여 전 의 를 간소화 합 니 다. 예 를 들 어:
    typedef struct data{
        type name;
        ...
    }data;	//      data   struct data    ;
    

    구조 유형 에는 또 다른 성명 방식 이 있다.
    struct {
        type name0;		//type:  ; name:   
        type name1;
        ...
    }a1,a2;				//a1 a2        ,      name0 name1...
    //  :              a1、a2,         data!!!
    struct data {
        type name0;		//type:  ; name:   
        type name1;
        ...
    }b1,b2;				//b1 b2  data  ,      name0 name1...
    //                
    

    구조 유형 은 함수 내 / 외부 에서 정의 할 수 있 으 며, 일반적으로 함수 외 에 정의 되 며, 이러한 구조 유형 은 전역 적 으로 사용 할 수 있다.
    접근 구조 구성원:
    구 조 는 일반적으로 '.' 연산 자 와 이름 으로 구성원 을 방문 합 니 다. 예 를 들 어:
    data.name0
    data.name1
    

    구조 연산
  • 전체 구 조 를 방문 하려 면 구조 변수의 이름
  • 을 직접 사용 해 야 한다.
  • 전체 구조 에 대해 할당, 주 소 를 찾 을 수 있 고 함수 파라미터
  • 에 도 전달 할 수 있다.
    a = (stryct data){1,2};		//  name0 name1   int,     a.name0=1,a.name1=2;
    

    구 조 는 함수 매개 변수 로 한다.
  • 전체 구 조 는 함수 매개 변수 로 함수
  • 를 전달 할 수 있다.
  • 주의: 일반 매개 변수 와 마찬가지 로 구조 변 수 를 매개 변수 로 함수 에 전달 하 는 것 은 값 을 함수 에 전달 하 는 것 일 뿐 변수의 값 에 변화 와 영향 을 주지 않 습 니 다!
  • 구조 로 돌아 갈 수 없 는 방안 을 해결 합 니 다. 임시 구조 변 수 를 만 들 고 돌아 갈 수도 있 고 구조 지침 을 매개 변수 로 사용 할 수도 있 습 니 다
  • 지향 구조 지침
    - > 포인터 가 가리 키 는 구조 변수 중의 구성원 을 표시 합 니 다 (의 미 는 '가리 키 는 것' 입 니 다)
    struct data *getstruct(struct data *p){
        scanf("%d", &p->name0);
        return p;	//                       
    }
    

    구 조 는 끼 워 넣 을 수 있다.
    구조 배열 을 가리 키 는 지침
    정의: 포인터 변 수 는 하나의 구조 배열 을 가리 킬 수 있 습 니 다. 이때 구조 포인터 변수의 값 은 전체 구조 배열 의 첫 번 째 주소 입 니 다. 구조 포인터 변 수 는 구조 배열 의 요 소 를 가리 킬 수 있 습 니 다. 이때 구조 포인터 변수의 값 은 이 구조 배열 요소 의 첫 번 째 주소 입 니 다.
    구조 포인터 변 수 는 구조 변수 나 구조 배열 요소 의 구성원 에 게 접근 할 수 있 지만 한 구성원 을 가리 킬 수 없습니다. 즉, 한 구성원 의 주 소 를 가 져 와 서 부여 할 수 없습니다. 따라서 아래 의 할당 은 잘못 되 었 습 니 다.
    ps=&boy[1].sex;
    ps = boy; / (배열 의 첫 주 소 를 부여 합 니 다)
    또는: ps = & boy [0]; / (0 번 요소 의 첫 번 째 주 소 를 부여 합 니 다)
    3. 연합 유형
    연합 유형의 정의 방식 과 사용 방식 은 구조 유형 과 비슷 하 다.
    구조 유형 과 의 차 이 는 모든 구성원 이 메모리 공간 을 공유 하고 연합 유형의 모든 구성원 은 같은 시간 에 하나의 역할 만 할 수 있 기 때문에 그 가 사용 하 는 메모리 공간 은 모든 구성원 중에서 가장 큰 크기 이다.
    요약:
  • 공용 체 의 공간 은 어느 순간 에 한 명의 구성원 만 작용 한다.
  • 공용 체 변수 에 있 는 멤버 는 마지막 으로 넣 은 멤버 입 니 다.
  • 공용 체 변 수 는 정의 할 때 초기 값 을 부여 할 수 없습니다.
  • 공용 체 변 수 는 함수 의 매개 변수 나 함수 값 으로 할 수 없 지만 공용 체 를 가리 키 는 포인터 변 수 를 사용 할 수 있 습 니 다.
  • 공용 체 는 구조의 구성원 이 될 수 있 고 구조 체 도 공용 체 의 구성원 이 될 수 있다.
  • ⭐연합 유형 을 사용 할 때 는 유효 멤버 가 누구 인지 특히 주의해 야 한다.
    ⭐유 니 온 형식 데 이 터 를 통 해 정수 나 다른 유형의 데 이 터 를 간접 적 으로 얻 을 수 있 는 단일 바이트

    좋은 웹페이지 즐겨찾기