Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> การเขียนโปรแกรม C

ตัวอย่างโปรแกรมการจัดสรรหน่วยความจำแบบไดนามิกในภาษาซี


ปัญหา

ค้นหาค่าสูงสุดและต่ำสุดจากอาร์เรย์โดยใช้การจัดสรรหน่วยความจำแบบไดนามิกใน C

วิธีแก้ปัญหา

การจัดสรรหน่วยความจำแบบไดนามิกช่วยให้โปรแกรมเมอร์ C สามารถจัดสรรหน่วยความจำได้ในขณะใช้งานจริง

ฟังก์ชันต่างๆ ที่เราใช้ในการจัดสรรหน่วยความจำแบบไดนามิก ณ รันไทม์คือ −

  • malloc () - จัดสรรบล็อกของหน่วยความจำเป็นไบต์ที่รันไทม์

  • Calloc () - จัดสรรบล็อกต่อเนื่องของหน่วยความจำที่รันไทม์

  • realloc () - ใช้เพื่อลด (หรือ) ขยายหน่วยความจำที่จัดสรร

  • ฟรี () - จัดสรรพื้นที่หน่วยความจำที่จัดสรรไว้ก่อนหน้านี้

การหาจำนวนสูงสุดและต่ำสุดในอาร์เรย์โดยใช้การจัดสรรหน่วยความจำแบบไดนามิก

ตรรกะในการค้นหาองค์ประกอบสูงสุดในอาร์เรย์ -

ขั้นแรกให้จัดสรรหน่วยความจำให้กับอาร์เรย์

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