16강 구조체

16.구조체

16-1. 구조체의 정의와 선언

여러개의 변수를 묶어 하나의 객체를 표현하고자 할 때 사용한다.

struct 구조체명 {
       자료형1 변수명1;
       자료형2 변수명2;
...
};

struct Student {
	char studentId[10];
    char name[10];
    int grade;
    char major[100];
}

16-2. 구조체의 변수의 접근

구조체의 변수에 접근할 때는 온점(.)을 사용한다.

struct Student {
	char studentId[10];
    char name[10];
    int grade;
    char major[100];
}

struct Student s;
strcpy(s.studentId,"21221014");
strcpy(s.name,"이승희");
s.grade = 4;
strcpy(s.major,"기계공학과");

구조체 내용 출력하기

struct Student{
	char studentId[10];
    char name[10];
    int grade;
    char major[100];
};

int main(void){
	struct Student s;
    strcpy(s.studentId,"21221014");
    strcpy(s.name,"이승희");
    strcpy(s.major,"기계공학과");
    s.grade =4;
    
    //구조체 내용 출력하기
    printf("학번: %s\n",s.studentId);
    printf("이름: %s\n",s.name);
    printf("학년: %d\n",s.grade);
    printf("학과: %s\n",s.major);
    system("pause");
    return 0;
}

struct Student ss라는 구조체 변수를 선언해 준 것이다.
strcpys.grade=4";과 같이 문자열은 선언하는 것이 불가능하기때문에 쓰는 함수이다.

구조체를 선언하고 💥' ; '💥 를 꼭 붙여준다.

하나의 구조체 변수를 사용할 때

struct Student{
	char studentId[10];
    char name[10];
    int grade;
    char major[100]
} s;

이렇게 하면 s라는 Student 구조체의 변수를 선언하게 된다. 이렇게 main함수 바깥에 사용하면 전역변수로도 사용 가능하다. 이렇게 쓸 때는 보통 Student 구조체의 변수가 하나밖에 없을 때이다.

구조체의 초기화

  • 1 사용하는 함수에서 초기화 해주기
int main(void){
	struct Student s = {"21221014","이승희",4,"기계공학과"};
    }
  • 2 하나의 구조체 변수만 선언한다면 다음과 같이 선언과 동시에 초기화
struct Student{
	char studentId[10];
    char name[10];
    int grade;
    char major[100]
} s = {"21221014","이승희",4,"기계공학과"};

16-3. typedef

typedef를 이용하면 임의의 자료형을 만들 수 있어 선언이 더욱 짧아짐.

#include <stdio.h>

typedef struct {
	char studentId[10];
    char name[10];
    int grade;
    char major[100];
} Student;

int main(void){
	Student s = {"21221014","이승희",4,"기계공학부"};
    printf("학번: %s\n",s.studentId);
    printf("이름: %s\n",s.name);
    printf("학년: %s\n",s.grade);
    printf("학과: %s\n",s.major);
    system("pause");
    return 0;
}

16-4. 구조체 포인터 변수

위와 똑같이 typedef 로 Student 구조체를 선언했을 때, 포인터변수로 구조체를 사용해보자.
이 경우에는 구조체가 선언된 메모리에 다음과 같이 넣어주는 것이다.

int main(void){
	Student *s = malloc(sizeof(Student));
    strcpy(s->studentId,"201221815");
    strcpy(s->name,"이승희");
    s->grade = 4;
    strcpy(s->major,"기계공학부");
    printf("학번: %s\n",s->studentId);
    printf("이름: %s\n",s->name);
    printf("학년: %d\n",s->grade);
    printf("학과: %s\n",s->major);
    system("pause");
    return 0;
}

좋은 웹페이지 즐겨찾기