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 s
는 s라는 구조체 변수를 선언해 준 것이다.
strcpy는 s.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;
}
Author And Source
이 문제에 관하여(16강 구조체), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://velog.io/@nara7875/16강-구조체저자 귀속: 원작자 정보가 원작자 URL에 포함되어 있으며 저작권은 원작자 소유입니다.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)