[흑마 프로그래머] C 언어 학습 노트의 구조체(12)

4438 단어 C 언어구조체
--------------------------------------IOS가 당신과 교류하기를 기대합니다!----------------------------------------------------------
구조체
수조에서 모든 원소는 똑같다. 만약에 우리가 모든 원소를 다르게 하려면 구조체를 사용하는 것을 고려할 수 있다.
구조체는 다양한 유형의 데이터 형식으로 구성된 새로운 데이터 유형이다
2. 구조체의 정의
형식:
struct 구조체 이름
데이터 형식 변수 1;
데이터 형식 변수 2;
데이터 유형 변수 3
;
        ... ...
}
예를 들면 다음과 같습니다.
    struct Student {
        int age;
        char *name;    
    };

3. 구조체 변수의 정의
1. 구조체를 먼저 정의하고 변수를 정의한다.
    struct Student {
        int age;
        char *name;
    };
    struct Student stu;

2. 구조체를 정의하는 동시에 변수를 정의한다.
    struct Student {
        int age;
        char *name;
    } stu;

3. 구조체 변수를 직접 정의
    struct {
        int age;
        char *name;
    } stu;

4. 구조체의 초기화
1. 변수를 설명하는 동시에 초기화
    struct Student {
        int age;
        char *name;
    };
    struct Student stu = {22, "hello"};

2. 먼저 변수를 설명하고 하나하나 초기화한다.
    struct Student stu;
    stu.age = 22;
    stu.name = "hello";

3. 구조체를 정의하는 동시에 변수 정의와 초기화
    struct Student {
        int age;
        char *name;
    } stu = {22, "hello"};

4. 비순차적 초기화
    struct Student stu = {.name = "hello", .age = 22};

5. 주의: 구조체를 초기화하지 않으면 모든 변수는 자동으로 기본값이 있습니다
5. 액세스 구조체
1. 구조체 변수는 기본 데이터 유형이다
    int age = stu.age;
    char *name = stu.name;

2. 구조체 변수는 구조체
    struct Date {
        int year;
        int month;
        int day;
    };
    
    struct Student {
        int age;
        char *name;
        struct Date birthday;
    };
    
    struct Student stu = {22, "hello", {1999, 10, 10}};
    int year = stu.birthday.year;
    int month = stu.birthday.month;
    int day = stu.birthday.day;

3. 같은 구조체 유형 변수 간에 전체적으로 값을 부여할 수 있다
    struct Student stu1 = {23, "hello"};
    struct Student stu2 = stu1;     //       stu1        stu2,  stu2 = {23, "hello"}

6. 구조체 수조
1. 세 가지 정의 방법:
    //    
    struct Student {
        int age;
        char *name;
    } stus[3];
    
    //    
    struct Student {
        int age;
        char *name;
    };
    struct Student stu[3];
    
    //    
    struct {
        int age;
        char *name;
    } stus[3];

2. 초기화는 수조의 초기화와 마찬가지로 수조 노트를 참조할 수 있다.
stus = {{12, "hello"}, {23, "world"}, {24, "welcome"}}

7. 구조체 지침
1. 형식struct 구조체 이름 * 바늘 이름;
2. 구조체에 접근하는 방식이 증가했고 이전에 구조체에 접근하는 방식은
구조체 변수 이름.구성원 변수 이름
지금 늘었어요.
(*포인터 이름).구성원 변수 이름 포인터 이름 -> 구성원 변수 이름
3. 예
    struct Student {
        int age;
        char *name;
    };
   
    struct Student stu = {23, "hello"};
    struct Student *p = &stu;
    
    printf("%d, %s
", stu.age, stu.name); printf("%d, %s
", (*p).age, (*p).name); printf("%d, %s
", p->age, p->name);

8. 구조체와 함수
1. 구조체는 함수 매개 변수로서 구조체 실참은 구성원 변수 값에 대응하는 값을 함수 구조체 매개 변수에 대응하는 변수 값에 부여하고 함수 구조체 매개 변수를 바꾸면 실참에 영향을 주지 않는다.
4
struct Student {
    int age;
    char *name;
};

void test(struct Student s)
{
    //     s        stu
    s.age = 10;
    s.name = "world";
}

int main()
{
    struct Student stu = {23, "hello"};
    test(stu);
    printf("%d, %s
", stu.age, stu.name); return 0; }
출력:
23, hello
2. 구조체 바늘을 함수 매개 변수로 한다
4
struct Student {
    int age;
    char *name;
};

void test(struct Student * s)
{
    //     s       stu
    s->age = 10;
    s->name = "world";
}

int main()
{
    struct Student stu = {23, "hello"};
    test(&stu);
    printf("%d, %s
", stu.age, stu.name); return 0; }
출력:
10, world
--------------------------------------IOS가 당신과 교류하기를 기대합니다!----------------------------------------------------------
자세한 내용은 다음을 참조하십시오.http://edu.csdn.net

좋은 웹페이지 즐겨찾기