c ++ ที่จะผ่านอาร์เรย์เพื่อฟังก์ชั่น
C ++ ไม่อนุญาตให้มีการส่งผ่านอาร์เรย์ที่สมบูรณ์เป็นพารามิเตอร์ไปยังฟังก์ชัน แต่คุณสามารถระบุชื่ออาร์เรย์โดยไม่ต้องดัชนีเพื่อผ่านตัวชี้ไปยังอาร์เรย์
หากคุณต้องการที่จะผ่านอาร์เรย์หนึ่งมิติในการทำงานเป็นอาร์กิวเมนต์ที่คุณจะต้องอยู่ในต่อไปนี้สามวิธีในการประกาศฟังก์ชั่นในรูปแบบของพารามิเตอร์ผลลัพธ์ของทั้งสามงบเป็นวิธีเดียวกันเพราะแต่ละวิธีจะบอกคอมไพเลอร์ที่จะได้รับ ตัวชี้จำนวนเต็ม ในทำนองเดียวกันคุณยังสามารถส่งผ่านอาร์เรย์หลายมิติเป็นพารามิเตอร์ที่เป็นทางการ
โหมด 1
พารามิเตอร์อย่างเป็นทางการชี้:
void myFunction(int *param) { . . . }
Mode 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 balance[5] = {1000, 2, 3, 17, 50}; double avg; // 传递一个指向数组的指针作为参数 avg = getAverage( balance, 5 ) ; // 输出返回值 cout << "平均值是:" << avg << endl; return 0; }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
平均值是: 214.4
ที่คุณสามารถดูฟังก์ชั่นความยาวของอาร์เรย์จะไม่เกี่ยวข้องเพราะ c ++ ไม่ได้ดำเนินการตรวจสอบขอบเขตพารามิเตอร์ของฟอร์ม