C++ ไม่อนุญาตให้ส่งผ่านอาร์เรย์ทั้งหมดเป็นอาร์กิวเมนต์ไปยังฟังก์ชัน อย่างไรก็ตาม คุณสามารถส่งตัวชี้ไปยังอาร์เรย์ได้โดยการระบุชื่ออาร์เรย์โดยไม่มีดัชนี มีสามวิธีในการส่งอาร์เรย์ 2D ไปยังฟังก์ชัน -
ระบุขนาดคอลัมน์ของอาร์เรย์ 2 มิติ
void processArr(int a[][10]) { // Do something }
ส่งอาร์เรย์ที่มีพอยน์เตอร์
void processArr(int *a[10]) { // Do Something } // When callingint *array[10]; for(int i = 0; i < 10; i++) array[i] = new int[10]; processArr(array);
ส่งตัวชี้ไปยังตัวชี้
void processArr(int **a) { // Do Something } // When calling: int **array; array = new int *[10]; for(int i = 0; i <10; i++) array[i] = new int[10]; processArr(array);
ตัวอย่าง
#include<iostream> using namespace std; void processArr(int a[][2]) { cout << "element at index 1,1 is " << a[1][1]; } int main() { int arr[2][2]; arr[0][0] = 0; arr[0][1] = 1; arr[1][0] = 2; arr[1][1] = 3; processArr(arr); return 0; }
ผลลัพธ์
สิ่งนี้จะให้ผลลัพธ์ -
element at index 1,1 is 3