सी ++ किसी फ़ंक्शन के तर्क के रूप में संपूर्ण सरणी को पारित करने की अनुमति नहीं देता है। हालांकि, आप किसी इंडेक्स के बिना ऐरे का नाम निर्दिष्ट करके किसी ऐरे में पॉइंटर पास कर सकते हैं।
यदि आप किसी फ़ंक्शन में एक एकल-आयाम सरणी को तर्क के रूप में पास करना चाहते हैं, तो आपको निम्नलिखित तीन तरीकों में से एक में फ़ंक्शन औपचारिक पैरामीटर घोषित करना होगा और सभी तीन घोषणा विधियां समान परिणाम उत्पन्न करती हैं क्योंकि प्रत्येक संकलक को बताता है कि एक पूर्णांक सूचक जा रहा है प्राप्त किया जाना है।
विधि-1
एक सूचक के रूप में औपचारिक पैरामीटर इस प्रकार हैं -
void myFunction(int *param) { . . . }
विधि-2
एक आकार सरणी के रूप में औपचारिक पैरामीटर निम्नानुसार हैं -
void myFunction(int param[10]) { . . . }
विधि-3
औपचारिक पैरामीटर एक असंगठित सरणी के रूप में निम्नानुसार हैं -
void myFunction(int param[]) { . . . }
अब, निम्नलिखित फ़ंक्शन पर विचार करें, जो एक अन्य तर्क के साथ एक तर्क के रूप में एक सरणी लेगा और पारित तर्कों के आधार पर, यह सरणी के माध्यम से पारित संख्याओं का औसत निम्नानुसार लौटाएगा -
double getAverage(int arr[], int size) { int i, sum = 0; double avg; for (i = 0; i < size; ++i) { sum += arr[i]; } avg = double(sum) / size; return avg; }
अब, हम उपरोक्त फ़ंक्शन को इस प्रकार कहते हैं -
#include <iostream> using namespace std; // function declaration: double getAverage(int arr[], int size); int main () { // an int array with 5 elements. int balance[5] = {1000, 2, 3, 17, 50}; double avg; // pass pointer to the array as an argument. avg = getAverage( balance, 5 ) ; // output the returned value cout << "Average value is: " << avg << endl; return 0; }
जब उपरोक्त कोड को एक साथ संकलित और निष्पादित किया जाता है, तो यह निम्नलिखित परिणाम उत्पन्न करता है -
Average value is: 214.4
जैसा कि आप देख सकते हैं, जहां तक फ़ंक्शन का संबंध है, सरणी की लंबाई कोई मायने नहीं रखती है क्योंकि C++ औपचारिक मापदंडों के लिए कोई सीमा जाँच नहीं करता है।