Computer >> Máy Tính >  >> Lập trình >> lập trình C

Chương trình ví dụ về cấp phát bộ nhớ động bằng ngôn ngữ C

Vấn đề

Tìm ra giá trị lớn nhất và tối thiểu từ một mảng sử dụng cấp phát bộ nhớ động trong C.

Giải pháp

Cấp phát bộ nhớ động cho phép các lập trình viên C cấp phát bộ nhớ trong thời gian chạy.

Các chức năng khác nhau mà chúng tôi đã sử dụng để cấp phát bộ nhớ động vào thời gian chạy là -

  • Malloc () - cấp phát một khối bộ nhớ theo byte trong thời gian chạy.

  • Calloc () - cấp phát các khối bộ nhớ liên tục trong thời gian chạy.

  • Realloc () - được sử dụng để giảm (hoặc) mở rộng bộ nhớ được cấp phát.

  • Free () - deal phân bổ không gian bộ nhớ được cấp phát trước đó.

Tìm số lớn nhất và nhỏ nhất trong một mảng bằng cách sử dụng cấp phát bộ nhớ động

Logic để tìm phần tử tối đa trong một mảng -

Đầu tiên cấp phát bộ nhớ cho mảng

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);
}

Logic để tìm phần tử tối thiểu trong một mảng -

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

Ví dụ

#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);
}

Đầu ra

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