C 語言動態記憶體分配示例程式
問題
使用 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("
enter size:"); scanf("%d",&n); p=(int*)malloc(n*sizeof(int)); //dynamic memory allocation printf("
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("
maximum=%d
minimum=%d",max,min); free(p); }
輸出
enter size: enter elements: maximum=-32768 minimum=32767
廣告