30/09/2018, 20:49

mọi người giải thích cho em cái cơ chế tạo mảng 2 chiều này với ạ

#include <iostream>     // std::cout
using namespace std;

int main()
{
    int **a;
    a = new int*[2];
    for (int i = 0; i < 2; i++)
    {
        a[i] = new int[2];
    }
    a[0][0] = 1;
    a[0][1] = 2;
    a[1][0] = 3;
    a[1][1] = 4;

    cout << "a[0][0] = " << a[0][0] << endl;
    cout << "a[0][1] = " << a[0][1] << endl;
    cout << "a[1][0] = " << a[1][0] << endl;
    cout << "a[1][1] = " << a[1][1] << endl;
    return 0;
}
Trần Tuấn An viết 23:00 ngày 30/09/2018

Để đơn giản về mảng hai chiều thì khi bạn viết [a][b] hãy tưởng tượng 1 tủ sách có a ngăn và mỗi ngăn có thể chứa b quyển sách :3 như vậy nếu chúng ta cần chỗ chứa sách thì bạn cần cung cấp cho cái gì ??? Chỉ cần cung cấp bộ nhớ cho cái ngăn thôi đúng không chứ ko cần phải cung cấp cho từng quyển sách vì nó sẽ được xếp vào ngăn mà :3

 a = new int*[2];
    for (int i = 0; i < 2; i++)
    {
        a[i] = new int[2];
    }

Đây chính là thao tác cung cấp bộ nhớ cho 2 ngăn chứa sách đó

Thang viết 22:59 ngày 30/09/2018

bản chất của mảng 2 chiều là mảng một chiều

Hoàng Công Nhật Nam viết 23:02 ngày 30/09/2018

ý mình là cái cơ chế tại sao khi khai báo hàng là khai báo kiểu con trỏ của con trỏ
ví dụ:
int *a;
a = new int
[2];
trong khi 1 chiều chỉ là con trỏ thôi
ví dụ:
int *a;
a = new int[2];

Bài liên quan
0