सी लैंडस्केप
जावा जैसी भाषाओं के विपरीत, सी नहीं करता है 'ऐरे लौटाने वाले फ़ंक्शंस के लिए प्रत्यक्ष समर्थन प्रदान न करें। जबकि सरणियाँ वापस की जा सकती हैं, प्रक्रिया बोझिल है। यह इस डिज़ाइन निर्णय के पीछे अंतर्निहित कारणों के बारे में सवाल उठाता है। सी, सरणी नाम मेमोरी पतों का प्रतिनिधित्व करते हैं, न कि स्वयं सरणियों का। ऐरे को या तो स्टैक (int array[n]) या हीप (int* array = (int*) Malloc(sizeof(int)*n) पर आवंटित किया जाता है, जो मेमोरी प्रबंधन को प्रभावित करता है।
स्कोप और मेमोरी एक्सेस
एक काल्पनिक फ़ंक्शन पर विचार करें जो एक सरणी लौटाता है:
int[] foo(args){ int परिणाम[n]; // कोड... वापसी परिणाम; }इस फ़ंक्शन के बाहर से मेमोरी तक पहुंचने पर, हमें एक समस्या का सामना करना पड़ता है। परिणाम सरणी की मेमोरी फ़ंक्शन कॉल के स्टैक दायरे में नहीं है। इसके लिए मेमोरी एक्सेसिबिलिटी को संरक्षित करने के संदर्भ में सरणियों को पारित करने के अपरंपरागत दृष्टिकोण की आवश्यकता होती है। हालाँकि, ये मान अक्सर मेमोरी पतों का प्रतिनिधित्व करते हैं, जिससे रिटर्न मान प्रभावी रूप से पॉइंटर्स के साथ सारणी बन जाते हैं। जावा दक्षता संबंधी चिंताओं के बावजूद मेमोरी प्रबंधन को स्वचालित रूप से संभालता है। इस निर्णय ने ऐरे-रिटर्निंग फ़ंक्शंस को सीधे लागू न करने के विकल्प को प्रभावित किया। जबकि टेम्प्लेट कक्षाएं इसे पूरा कर सकती हैं, C सरणियों को वापस करना एक श्रमसाध्य प्रक्रिया बनी हुई है, जो जावा के दृष्टिकोण के अनुरूप है, लेकिन इसकी सुविधाओं के बिना। प्रदर्शन पर चिंताओं के कारण रिटर्निंग फ़ंक्शन उत्पन्न हुए। प्रत्यक्ष समर्थन प्रदान नहीं करने के बावजूद, सी पारंपरिक सी दृष्टिकोण का उपयोग करके एरे को वापस करने की अनुमति देता है, जिससे डेवलपर्स को मेमोरी प्रबंधन पर निम्न-स्तरीय नियंत्रण के साथ सशक्त बनाया जाता है।
अस्वीकरण: उपलब्ध कराए गए सभी संसाधन आंशिक रूप से इंटरनेट से हैं। यदि आपके कॉपीराइट या अन्य अधिकारों और हितों का कोई उल्लंघन होता है, तो कृपया विस्तृत कारण बताएं और कॉपीराइट या अधिकारों और हितों का प्रमाण प्रदान करें और फिर इसे ईमेल पर भेजें: [email protected] हम इसे आपके लिए यथाशीघ्र संभालेंगे।
Copyright© 2022 湘ICP备2022001581号-3