static은 시스템이 알아서 할당하고 돌려주고, heap은 내가 할당하고 싶은 만큼 할당하고 돌려준다.
** 위의 코드가 에러나는 이유:
런타임에 입력 받은 변수를 컴파일 타임에 대입하는 형태는 논리에 맞지 않는다.
#include <stdio.h>
#include <stdlib.h>
int main()
{
int num;
int* student;
fputs("학생수를 입력하세요 : ", stdout);
scanf_s("%d", &num);
student = (int*)malloc(sizeof(int) * num);
if (student == NULL)
{
printf("메모리가 부족하여 할동할수 없습니다.\n");
return 0;
}
printf("할돵된 메모리는 %d입니다.\n", sizeof(int) * num);
free(student);
return 0;
}
//동적 메모리 할당
int main()
{
int num, i, total = 0;
int* student;
fputs("학생수를 입력하세요:", stdout);
scanf_s("%d", &num);
student = (int*)malloc(sizeof(int) * num);
if (student == NULL)
{
printf("메모리가 부족하여 할동할수 없습니다.\n");
return 0;
}
for (i = 0; i < num; i++)
{
printf("%d 번째 학생의 성적 입력:.\n", i+1);
scanf_s("%d", &student[i]);
}
for (i = 0; i < num; i++)
{
total += student[i];
}
printf("총점: %d, 평균: %d \n", total, total / num);
free(student);
return 0;
}