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

การส่งอาร์เรย์ 2 มิติไปยังฟังก์ชันใน C++


C++ ไม่อนุญาตส่ง array ทั้งอาร์เรย์เป็น argument ตรงๆ แต่ส่ง pointer ไปยัง array ได้ (ระบุชื่ออาร์เรย์โดยไม่มี index)

มี 3 วิธีส่ง 2D array:

1. ระบุขนาด column (column size ตายตัว)

void processArr(int a[][10]) { ... }

2. ส่ง array ของ pointers

void processArr(int *a[10]) { ... }
// เรียกใช้:
int *array[10];
for(int i=0; i<10; i++) array[i] = new int[10];
processArr(array);

3. ส่ง pointer to pointer

void processArr(int **a) { ... }
// เรียกใช้:
int **array = new int*[10];
for(int i=0; i<10; i++) array[i] = new int[10];
processArr(array);

ตัวอย่างรันได้ (วิธีที่ 1)

#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] = {{0,1}, {2,3}};
    processArr(arr);
    return 0;
}

ผลลัพธ์

element at index 1,1 is 3

หมายเหตุ: วิธีที่ 2, 3 ต้องลบหน่วยความจำในลำดับย้อนกลับ (ลบ 1D arrays ก่อน แล้วค่อยลบ array ของ pointers)