Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Lập Trình C

Ví dụ chương trình cấp phát bộ nhớ động trong C


Vấn đề

Tìm giá trị lớn nhất và nhỏ nhất từ mảng dùng cấp phát bộ nhớ động trong C.

Giải pháp

Cấp phát động cho phép cấp phát bộ nhớ tại runtime.

Các hàm cấp phát động:

  • malloc() – cấp phát khối bộ nhớ byte tại runtime.
  • calloc() – cấp phát khối bộ nhớ liên tục tại runtime.
  • realloc() – thu hẹp/mở rộng bộ nhớ đã cấp phát.
  • free() – giải phóng bộ nhớ đã cấp phát.

Tìm max/min trong mảng dùng cấp phát động

Logic tìm max:

p=(int*)malloc(n*sizeof(int)); //cấp phát động for(i=0;i<n;i++){     scanf("%d",p+i);     if(*(p+i)>max) //tìm max         max=*(p+i); }

Logic tìm min:

for(i=0;i<n;i++){     scanf("%d",p+i);     if(*(p+i)<min) //tìm min         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)); //cấp phát động     printf("\n enter elements:");     for(i=0;i<n;i++){         scanf("%d",p+i);         if(*(p+i)>max) //tìm max             max=*(p+i);         if(*(p+i)<min) //tìm min             min=*(p+i);     }     printf("\n maximum=%d\n minimum=%d",max,min);     free(p); }

Kết quả

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