문제
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