Computer >> คอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

การส่งผ่านอาร์เรย์ไปยังฟังก์ชันใน C++


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