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;
// 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++ ดำเนินการตรวจสอบพารามิเตอร์ที่เป็นทางการโดยไม่มีขอบเขต