C++ संपूर्ण ऐरे को फंक्शन में तर्क के रूप में पास करने की अनुमति नहीं देता। हालांकि, आप ऐरे के नाम को बिना इंडेक्स के निर्दिष्ट करके ऐरे के पॉइंटर को पास कर सकते हैं।
यदि आप एकल-आयामी ऐरे को फंक्शन में तर्क के रूप में पास करना चाहते हैं, तो आपको फंक्शन औपचारिक पैरामीटर को निम्नलिखित तीन तरीकों में से एक में घोषित करना होगा और सभी तीन घोषणा विधियां समान परिणाम देती हैं क्योंकि प्रत्येक कंपाइलर को बताती है कि एक पूर्णांक पॉइंटर प्राप्त होने वाला है।
विधि-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;
// फंक्शन घोषणा:
double getAverage(int arr[], int size);
int main() {
// 5 तत्वों वाला एक int ऐरे।
int balance[5] = {1000, 2, 3, 17, 50};
double avg;
// ऐरे के पॉइंटर को तर्क के रूप में पास करें।
avg = getAverage(balance, 5);
// लौटाए गए मान को आउटपुट करें
cout << "Average value is: " << avg << endl;
return 0;
}
जब उपरोक्त कोड को एक साथ कंपाइल और निष्पादित किया जाता है, तो यह निम्न परिणाम देता है:
Average value is: 214.4
जैसा कि आप देख सकते हैं, जहां तक फंक्शन का संबंध है, ऐरे की लंबाई मायने नहीं रखती क्योंकि C++ औपचारिक पैरामीटर के लिए कोई बाउंड्स चेकिंग नहीं करता।