2014-05-07 8 views
6

मैं सी में शुरुआत कर रहा हूं और मुझे वास्तव में एक सरणी के सभी तत्वों को बराबर शून्य या किसी भी मान को सेट करने के लिए एक कुशल विधि की आवश्यकता है। मेरी सरणी बहुत लंबी है, इसलिए मैं इसे लूप के साथ नहीं करना चाहता हूं।किसी सरणी के सभी तत्वों को शून्य या किसी भी मान पर कैसे सेट करें?

+0

बस पूछने के लिए - क्या आपने वास्तव में एक लूप का उपयोग करने का प्रयास किया था? अक्सर प्रदर्शन चिंता निराधार होती है। आपके सरणी में कितने तत्व हैं? इसे कितनी बार शुरू किया जाएगा? (जैसा कि उत्तरों में चर्चा की गई है, यह केवल तभी जरूरी होगा जब सरणी तत्वों को 0 के अलावा किसी अन्य मान के साथ प्रारंभ किया जाना चाहिए। –

उत्तर

11

यदि आपके सरणी में स्थिर संग्रहण आवंटन है, तो यह डिफ़ॉल्ट रूप से शून्य पर प्रारंभ होता है। हालांकि, यदि सरणी में स्वचालित संग्रहण आवंटन है, तो आप सरणी प्रारंभकर्ता सूची का उपयोग करके अपने सभी तत्वों को शून्य में प्रारंभ कर सकते हैं जिसमें शून्य शामिल है।

// function scope 
// this initializes all elements to 0 
int arr[4] = {0}; 
// equivalent to 
int arr[4] = {0, 0, 0, 0}; 

// file scope 
int arr[4]; 
// equivalent to 
int arr[4] = {0}; 

कृपया ध्यान दें एक प्रारंभकर्ता सूची जो एक एकल तत्व (मूल्य) शामिल हैं का उपयोग कर शून्य के अलावा एक मूल्य के एक सरणी के तत्वों प्रारंभ करने में कोई मानक तरीका नहीं है। प्रारंभकर्ता सूची का उपयोग करके आपको सरणी के सभी तत्वों को स्पष्ट रूप से प्रारंभ करना होगा।

// initialize all elements to 4 
int arr[4] = {4, 4, 4, 4}; 
// equivalent to 
int arr[] = {4, 4, 4, 4}; 
+0

मानक (सी 99) परिभाषा परिभाषा 'int x [] = {1, 3, 5}; 'एक ही बयान में initilization के रूप में गिनती नहीं है? –

+0

@ पीटरस्चनेडर धन्यवाद। मैंने भ्रमित लाइन को सही किया। – ajay

+0

प्रारंभिकरण पहले से ही कई बार चर्चा की जा चुकी है। प्रश्न यह है कि आप सरणी के लिए समान मान कैसे निर्दिष्ट करेंगे? – overexchange

1

यदि आपकी सरणी स्थैतिक या वैश्विक है तो इसे मुख्य() शुरू होने से पहले शून्य में प्रारंभ किया गया है। यह सबसे कुशल विकल्प होगा।

2
int myArray[10] = { 5, 5, 5, 5, 5, 5, 5, 5, 5, 5 }; // All elements of myArray are 5 
int myArray[10] = { 0 }; // Will initialize all elements to 0 
int myArray[10] = { 5 }; // Will initialize myArray[0] to 5 and other elements to 0 
static int myArray[10]; // Will initialize all elements to 0 
/************************************************************************************/ 
int myArray[10];// This will declare and define (allocate memory) but won’t initialize 
int i; // Loop variable 
for (i = 0; i < 10; ++i) // Using for loop we are initializing 
{ 
    myArray[i] = 5; 
} 
/************************************************************************************/ 
int myArray[10] = {[0 ... 9] = 5}; // This works only in GCC 
2

यदि आप लंबाई के बारे में सुनिश्चित हैं तो आप मेमसेट का उपयोग कर सकते हैं।

मेमसेट (पीआरटी, 0x00, लंबाई)

संबंधित मुद्दे