#include <stdio.h>
typedef struct Student { // 학생 구조체 정의
char studentId[10];
char name[10];
int grade;
char major[100];
} Student;
int main(void) {
Student s = { "52120260", "원선영", 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;
}
typedef 키워드
- 임의의 자료형을 만들 수 있으므로 선언이 더 짧아집니다.
#include <stdio.h>
#include <stdlib.h>
typedef struct {
char studentId[10];
char name[10];
int grade;
char major[100];
} Student;
int main(void) {
// 동적할당 이용 (malloc)
// s는 포인터이기 때문에
// 변수 s가 가르키고 있는 그 메모리 주소의 학생 구조체가 할당되어 있는것
Student *s = malloc(sizeof(Student));
strcpy(s->studentId, "52120260");
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;
}
=> 모두 실행결과는 동일
동적 메모리 할당
1) 배열의 경우 사전에 적절한 크기만큼 할당해주어야 함
2) 우리가 원하는 만큼만 메모리를 할당해서 사용하고자 한다면 동적 메모리 할당을 사용
3) 동적이라는 말의 의미는 프로그램 실행 도중에라는 의미입니다.
- malloc() => 메모리 공간 확보 <stdlib.h> 라이브러리에 정의
- 동적으로 할당된 변수는 반드시 free() 함수로 메모리 해제
- memset(포인터, 값, 크기)
문자열
문자열은 컴퓨터 메모리 구조상에서 마지막에 널값을 포함
- strlen : 문자열의 길이를 반환
- strcmp: 문자열 1이 문자열 2보다 사전적으로 앞에 있으면 -1, 뒤에 있으면 1을 반환
- strcpy: 문자열을 복사합니다.
- strcat: 문자열 1에 문자열 2를 더합니다.
- strstr: 문자열1에 문자열2가 어떻게 포함되어 있는지를 반환합니다.