C语言中动态内存分配的示例程序

问题

使用C中的动态内存分配从数组中找出最大值和最小值。

解决方案

动态内存分配使C程序员可以在运行时分配内存。

我们用来在运行时动态分配内存的不同功能是-

  • malloc()-在运行时以字节为单位分配一块内存。

  • calloc()-在运行时分配连续的内存块。

  • realloc()-用于减少(或)扩展分配的内存。

  • free()-释放先前分配的内存空间。

使用动态内存分配查找数组中的最大和最小数目

查找数组中最大元素的逻辑-

首先为数组分配内存

p=(int*)malloc(n*sizeof(int)); //动态内存分配
for(i=0;i<n;i++){
   scanf("%d",p+i);
   if(*(p+i)>max) //寻找最大元素
      max=*(p+i);
}

在数组中查找最小元素的逻辑-

for(i=0;i<n;i++){
   scanf("%d",p+i);
   if(*(p+i)<min) //寻找最小元素
      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)); //动态内存分配
   printf("\n enter elements:");
   for(i=0;i<n;i++){
      scanf("%d",p+i);
      if(*(p+i)>max) //寻找最大元素
         max=*(p+i);
      if(*(p+i)<min) //寻找最小元素
         min=*(p+i);
   }
   printf("\n maximum=%d\n minimum=%d",max,min);
   free(p);
}
输出结果
enter size:
enter elements:
maximum=-32768
minimum=32767