मेमोरी को निम्नलिखित दो तरीकों से एलोकेट किया जा सकता है:

स्टेटिक मेमोरी एलोकेशन
स्टेटिक वेरिएबल आवंटित स्थान के एक ब्लॉक में परिभाषित होता है, जिसका आकार निश्चित होता है। एक बार एलोकेट होने के बाद, इसे कभी फ्री नहीं किया जा सकता।
प्रोग्राम में घोषित वेरिएबल के लिए मेमोरी एलोकेट की जाती है।
एड्रेस को '&' ऑपरेटर का उपयोग करके प्राप्त किया जा सकता है और पॉइंटर को असाइन किया जा सकता है।
मेमोरी कंपाइल टाइम के दौरान एलोकेट की जाती है।
यह स्टैक का उपयोग करके मेमोरी के स्टेटिक एलोकेशन को बनाए रखता है।
इस एलोकेशन में, एक बार मेमोरी एलोकेट होने के बाद, मेमोरी का आकार नहीं बदल सकता।
यह कम कुशल है।
किसी वेरिएबल का अंतिम आकार प्रोग्राम चलाने से पहले तय हो जाता है, तो इसे स्टेटिक मेमोरी एलोकेशन कहा जाता है। इसे कंपाइल-टाइम मेमोरी एलोकेशन भी कहा जाता है।
हम कंपाइल-टाइम पर एलोकेट किए गए वेरिएबल का आकार नहीं बदल सकते।
उदाहरण 1
स्टेटिक मेमोरी एलोकेशन का उपयोग आमतौर पर एरे के लिए किया जाता है। आइए एरे पर एक उदाहरण प्रोग्राम लें:
#include<stdio.h>
main (){
int a[5] = {10,20,30,40,50};
int i;
printf ("Elements of the array are");
for (i=0; i<5; i++)
printf ("%d", a[i]);
}
आउटपुट
Elements of the array are 1020304050
उदाहरण 2
एरे में सभी एलिमेंट्स का योग और गुणनफल निकालने का एक अन्य उदाहरण:
#include<stdio.h>
void main(){
// एरे घोषित करना - रन टाइम //
int array[5] = {10,20,30,40,50};
int i, sum = 0, product = 1;
// एरे में एलिमेंट्स पढ़ना //
// फॉर लूप //
for(i = 0; i < 5; i++){
// योग और गुणनफल की गणना, आउटपुट प्रिंट करना //
sum = sum + array[i];
product = product * array[i];
}
// योग और गुणनफल प्रदर्शित करना //
printf("Sum of elements in the array is : %d\n", sum);
printf("Product of elements in the array is : %d\n", product);
}
आउटपुट
Sum of elements in the array is : 150 Product of elements in the array is : 12000000