समस्या
सी भाषा में, क्या प्रोग्राम को निष्पादित किया जाता है, यदि हम एक अप्रारंभीकृत सरणी का उपयोग करते हैं?
समाधान
-
यदि हम किसी अप्रारंभीकृत सरणी का उपयोग करते हैं, तो संकलक कोई संकलन और निष्पादन त्रुटि उत्पन्न नहीं करेगा।
-
यदि कोई सरणी अप्रारंभीकृत है, तो आपको अप्रत्याशित परिणाम मिल सकते हैं।
-
इसलिए, बेहतर होगा कि हमें हमेशा ऐरे एलिमेंट को डिफ़ॉल्ट मानों के साथ इनिशियलाइज़ करना चाहिए।
उदाहरण कार्यक्रम
एक अप्रारंभीकृत सरणी तक पहुँचने का C प्रोग्राम निम्नलिखित है -
#include <stdio.h>
int main(void){
int a[4];
int b[4] = {1};
int c[4] = {1,2,3,4};
int i; //for loop counter
//printing all alements of all arrays
printf("\nArray a:\n");
for( i=0; i<4; i++ )
printf("arr[%d]: %d\n",i,a[i]);
printf("\nArray b:\n");
for( i=0; i<4; i++)
printf("arr[%d]: %d\n",i,b[i]);
printf("\nArray c:\n");
for( i=0; i<4; i++ )
printf("arr[%d]: %d\n",i, c[i]);
return 0;
} आउटपुट
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
Array a: arr[0]: 4195872 arr[1]: 0 arr[2]: 4195408 arr[3]: 0 Array b: arr[0]: 1 arr[1]: 0 arr[2]: 0 arr[3]: 0 Array c: arr[0]: 1 arr[1]: 2 arr[2]: 3 arr[3]: 4
नोट
अगर हमने किसी ऐरे को इनिशियलाइज़ नहीं किया है, तो डिफ़ॉल्ट रूप से, यह गारबेज वैल्यू को प्रिंट करता है और कभी कोई एरर नहीं दिखाता है।
एक गैर-आरंभिक सरणी तक पहुँचने के लिए एक और सी प्रोग्राम पर विचार करें -
उदाहरण
#include <stdio.h>
int main(void){
int A[4];
int B[4] ;
int C[4] = {1,2};
int i; //for loop counter
//printing all alements of all arrays
printf("\nArray a:\n");
for( i=0; i<4; i++ )
printf("arr[%d]: %d\n",i,A[i]);
printf("\nArray b:\n");
for( i=0; i<4; i++)
printf("arr[%d]: %d\n",i,B[i]);
printf("\nArray c:\n");
for( i=0; i<4; i++ )
printf("arr[%d]: %d\n",i, C[i]);
return 0;
} आउटपुट
जब उपरोक्त प्रोग्राम को निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
Array a: arr[0]: 4195856 arr[1]: 0 arr[2]: 4195408 arr[3]: 0 Array b: arr[0]: -915120393 arr[1]: 32767 arr[2]: 0 arr[3]: 0 Array c: arr[0]: 1 arr[1]: 2 arr[2]: 0 arr[3]: 0