อาร์เรย์สามารถส่งไปยังฟังก์ชันเป็นอาร์กิวเมนต์ได้ ในโปรแกรมนี้ เราจะแสดงองค์ประกอบของอาร์เรย์ 2 มิติโดยการส่งมันไปยังฟังก์ชัน
อัลกอริธึม
- อาร์เรย์ 2D
n[][]ถูกส่งไปยังฟังก์ชันshow() - ใน
show()วนลูป巢套 (nested for loop) เพื่อเข้าถึงแต่ละองค์ประกอบ
โค้ดตัวอย่าง
#include <iostream>
using namespace std;
void show(int n[][3]); // ต้องระบุมิติที่ 2 (columns)
int main() {
int n[4][3] = {
{3, 4, 2},
{9, 5, 1},
{7, 6, 2},
{4, 8, 1}
};
show(n);
return 0;
}
void show(int n[][3]) {
cout << "Printing Values: " << endl;
for(int i = 0; i < 4; ++i) {
for(int j = 0; j < 3; ++j) {
cout << n[i][j] << " ";
}
}
}
ผลลัพธ์
Printing Values: 3 4 2 9 5 1 7 6 2 4 8 1
กฎสำคัญ: เมื่อส่งอาร์เรย์ 2 มิติ (หรือสูงกว่า) ไปฟังก์ชัน ต้องระบุมิติที่ 2, 3, ... ไปในพารามิเตอร์ (ทั้งใน declaration และ definition) เพราะคอมไพเลอร์ต้องรู้ stride (ขนาดแถว) เพื่อคำนวณ offset: n[i][j] == *(n + i*cols + j)
ทางเลือกทันสมัย: ใช้ std::vector<std::vector<int>>, std::array<std::array<int, 3>, 4>, หรือ std::span<int> (C++20) สำหรับ 1D view ของ 2D array