एक स्थानीय सरणी को सीधे C++ फ़ंक्शन से वापस नहीं किया जा सकता है क्योंकि यह फ़ंक्शन कॉल के बाद स्मृति में मौजूद नहीं हो सकता है। इसे हल करने का एक तरीका फ़ंक्शन में एक स्थिर सरणी का उपयोग करना है। चूंकि स्थैतिक सरणी का जीवनकाल संपूर्ण कार्यक्रम है, इसे उपरोक्त समस्या के बिना आसानी से C++ फ़ंक्शन से वापस किया जा सकता है।
इसे प्रदर्शित करने वाला एक कार्यक्रम इस प्रकार दिया गया है।
उदाहरण
#include <iostream> using namespace std; int *retArray() { static int arr[10]; for(int i = 0; i<10; i++) { arr[i] = i+1; } return arr; } int main() { int *ptr = retArray(); cout <<"The array elements are: "; for(int i = 0; i<10; i++) { cout<< ptr[i] <<" "; } return 0; }
आउटपुट
उपरोक्त कार्यक्रम का आउटपुट इस प्रकार है।
The array elements are: 1 2 3 4 5 6 7 8 9 10
आइए अब उपरोक्त कार्यक्रम को समझते हैं।
फ़ंक्शन retArray() में, एक स्थिर सरणी गिरफ्तारी परिभाषित की गई है। फिर इस सरणी को प्रारंभ करने के लिए लूप के लिए उपयोग किया जाता है। अंत में सरणी गिरफ्तारी वापस कर दी जाती है। इसे दिखाने वाला कोड स्निपेट इस प्रकार है।
int *retArray() { static int arr[10]; for(int i = 0; i<10; i++) { arr[i] = i+1; } return arr; }
मुख्य () फ़ंक्शन में, फ़ंक्शन retArray () को कॉल किया जाता है और ptr सरणी गिरफ्तारी की शुरुआत की ओर इशारा करता है। सरणी तत्वों को लूप के लिए उपयोग करके प्रदर्शित किया जाता है। इसे दिखाने वाला कोड स्निपेट इस प्रकार है।
int main() { int *ptr = retArray(); cout <<"The array elements are: "; for(int i = 0; i<10; i++) { cout<< ptr[i] <<" "; } return 0; }