Computer >> 컴퓨터 >  >> 프로그램 작성 >> C 프로그래밍

C 언어의 동적 메모리 할당에 대한 예제 프로그램

<시간/>

문제

C에서 동적 메모리 할당을 사용하여 배열에서 최대값과 최소값을 찾으십시오.

해결책

동적 메모리 할당을 통해 C 프로그래머는 런타임에 메모리를 할당할 수 있습니다.

런타임에 동적으로 메모리를 할당하는 데 사용한 다양한 기능은 다음과 같습니다. -

  • malloc() - 런타임에 메모리 블록을 바이트 단위로 할당합니다.

  • calloc() - 런타임에 연속적인 메모리 블록을 할당합니다.

  • realloc() - 할당된 메모리를 축소(또는) 확장하는 데 사용됩니다.

  • free() - 이전에 할당된 메모리 공간을 해제합니다.

동적 메모리 할당을 사용하여 배열에서 최대 및 최소 수 찾기

배열에서 최대 요소를 찾는 논리 -

먼저 배열에 메모리를 할당합니다.

p=(int*)malloc(n*sizeof(int)); //dynamic memory allocation
for(i=0;i<n;i++){
   scanf("%d",p+i);
   if(*(p+i)>max) //finding max element
      max=*(p+i);
}

배열에서 최소 요소를 찾는 논리 -

for(i=0;i<n;i++){
   scanf("%d",p+i);
   if(*(p+i)<min) //finding min element
      min=*(p+i);
}

예시

#include<stdio.h>
int main(){
   int *p,n,i,max=-32768,min=32767;
   printf("\n enter size:");
   scanf("%d",&n);
   p=(int*)malloc(n*sizeof(int)); //dynamic memory allocation
   printf("\n enter elements:");
   for(i=0;i<n;i++){
      scanf("%d",p+i);
      if(*(p+i)>max) //finding max element
         max=*(p+i);
      if(*(p+i)<min) //finding min element
         min=*(p+i);
   }
   printf("\n maximum=%d\n minimum=%d",max,min);
   free(p);
}

출력

enter size:
enter elements:
maximum=-32768
minimum=32767