포인터 3 - 메모리 동적 할당 / 배열
1) 포인터와 배열
2) 배열과 포인터, 문자열
3) 메모리 동적 할당

4) malloc( ... )

5) -> 표현 // 중요함 !!

화살표를 통해 나타낸다! 가장 중요한 내용
#include "Header.h"
struct Marine {
int hp;
int mp;
char name[20];
};
Marine* foo() {
Marine* m = (Marine*)malloc(sizeof(Marine));
m->hp = 100;
m->mp = 50;
strcpy(m->name, "Jim Raynor");
return m;
}
int main() {
Marine* m = foo();
printf("%s", (m->name);
return 0;
}
프로그램이 종료될 때까지 메모리를 계속 잡아먹기 때문에 free 함수로 할당을 해제시켜야 한다.
6) free( ... )

7) 동적 메모리 할당으로 가변 길이의 배열 만들기

#include "Header.h"
int main() {
int* myArray;
int input;
fseek(stdin, 0, SEEK_END);
printf("숫자를 입력하시면 배열이 만들어 집니다. :");
scanf("%d", &input);
myArray = (int*)malloc(sizeof(int) * input);
for (int i = 0; i < input;i++) {
myArray[i] = i * 10;
}
for (int i = 0; i < input; i++) {
printf("myArray[%d] = %d\n", i, myArray[i]);
}
return 0;
}
과제형 문제)

sol)
#include "Header.h"
int main() {
int* myArray;
int input;
printf("숫자를 입력하시면 배열이 만들어 집니다. :");
fseek(stdin, 0, SEEK_END);
scanf("%d", &input);
myArray = (int*)malloc(sizeof(int) * input);
for (int i = 0; i < input; i++) {
myArray[i] = (i + 1) * 2;
}
for (int i = 0; i < input; i++) {
printf("myArray[%d] = %d\n", i, myArray[i]);
}
free(myArray);
return 0;
}