728x90
반응형
#include <stdio.h>
#include <stdlib.h>

int main(void)
{
	/*
	// common method
	int i;

	int age[5];

	printf("Input age of the five people : ");

	for (i = 0; i < 5; i++)
	{
		scanf_s("%d", &age[i]);
	}

	int sum = 0;

	for (i = 0; i < 5; i++)
	{
		sum += age[i];
	}
	
	double avg = sum / 5.0;

	printf("average age of the five people : %.2lf\n", avg);

	int size;

	size = sizeof(age);
	printf("%d", size);
	*/

	/*
	// Dynamic allocation function

	int i;

	int* pi;

	pi = (int*)malloc(5 * sizeof(int));
	if (pi == NULL)
	{
		printf("# NOT ENOUGH MEMORY.\n");
		exit(1);
	}

	printf("INPUT THE AGE OF THE FIVE PEOPLE : \n");
	for (i = 0; i < 5; i++)
	{
		scanf_s("%d", &pi[i]);
	}

	int sum = 0;

	for (i = 0; i < 5; i++)
	{
		sum += pi[i];
	}

	double avg = sum / 5.0;

	printf("THE AVERAGE AGE OF THE FIVE PEOPLE : %.2lf\n", avg);

	free(pi);
	*/

	return 0;
}

 

예를 들어서, 대학교에서 어떤 강의의 수강생에 대한 재수강 여부를 관리하고자 함.

알다시피 중간에 수강철회하는사람, 새로 수강신청하는 사람이 있음.

즉, 상황에 따라 유동적으로 바뀌게 됨.

대량 이 강의를 50명 정도가 듣는다고 치고 배열을 [50]으로 잡았는데,

생각보다 많은 사람이 빠져나가서 할당한 메모리가 남게 됨.

즉, 메모리를 쓸데 없이 많이 쓰고 있는 상태이므로 이러한 프로그램은 상당히 비효율적임.

 

이를 위해 상황에 따라 유동적으로 메모리를 할당하겠다고 하는 것이

C언어에서는 '동적 메모리 할당' malloc함수임.

 

이를 활용한 간단한 소스코드 예시

 

#include <stdio.h>
#include <stdlib.h>

int main()
{
	int i, count;		// 학생 수
	int sum = 0;

	printf("학생 몇명? :");
	scanf_s("%d", &count);

	int* student = malloc(sizeof(int) * count);
	if (student == NULL)
	{
		printf("Fail to Allocation.\n");
		exit(1);
	}

	for (i = 0; i < count; i++)
	{
		printf("[%d%d] score? : ", i + 1, count);
		scanf_s("%d", &student[i]);
		sum += student[i];
	}

	for (i = 0; i < count; i++)
	{
		printf("[%d/%d] Score : %d\n", i + 1, count, student[i]);
	}

	printf("%d", sum / i);


	free(student);


	return 0;
}

https://crush-on-study.tistory.com/230

728x90
반응형

'Language > C & C++' 카테고리의 다른 글

User-Defined Type  (0) 2022.09.08
Number guessing game in Python 3 and C  (0) 2022.08.31
dynamic memory allocation  (0) 2022.08.30
the difference between Parameter and Argument  (0) 2022.08.30
Tip for arrays  (0) 2022.08.29

+ Recent posts