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