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

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

อาร์เรย์สามารถส่งไปยังฟังก์ชันเป็นอาร์กิวเมนต์ได้ ในโปรแกรมนี้ เราจะแสดงองค์ประกอบของอาร์เรย์ 2 มิติโดยการส่งมันไปยังฟังก์ชัน

อัลกอริธึม

  1. อาร์เรย์ 2D n[][] ถูกส่งไปยังฟังก์ชัน show()
  2. ใน 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