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; double avg; double sum; for (i = 0; i < size; ++i) { sum += arr[i]; } avg = sum / size; return avg; }
ตอนนี้ขอเรียกฟังก์ชั่นข้างต้นดังต่อไปนี้:
#include <stdio.h> /* 函数声明 */ double getAverage(int arr[], int size); int main () { /* 带有 5 个元素的整型数组 */ int balance[5] = {1000, 2, 3, 17, 50}; double avg; /* 传递一个指向数组的指针作为参数 */ avg = getAverage( balance, 5 ) ; /* 输出返回值 */ printf( "平均值是: %f ", avg ); return 0; }
เมื่อโค้ดข้างต้นจะรวบรวมและดำเนินการก็จะก่อให้เกิดผลลัพธ์ต่อไปนี้:
平均值是: 214.400000
ที่คุณสามารถดูฟังก์ชั่นความยาวของอาร์เรย์จะไม่เกี่ยวข้องเพราะ C ไม่ได้ดำเนินการตรวจสอบขอบเขตพารามิเตอร์ของฟอร์ม