समस्या
सी भाषा में, क्या प्रोग्राम को निष्पादित किया जाता है, यदि हम एक अप्रारंभीकृत सरणी का उपयोग करते हैं?
समाधान
-
यदि हम किसी अप्रारंभीकृत सरणी का उपयोग करते हैं, तो संकलक कोई संकलन और निष्पादन त्रुटि उत्पन्न नहीं करेगा।
-
यदि कोई सरणी अप्रारंभीकृत है, तो आपको अप्रत्याशित परिणाम मिल सकते हैं।
-
इसलिए, बेहतर होगा कि हमें हमेशा ऐरे एलिमेंट को डिफ़ॉल्ट मानों के साथ इनिशियलाइज़ करना चाहिए।
उदाहरण कार्यक्रम
एक अप्रारंभीकृत सरणी तक पहुँचने का 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