#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;
}
Cần giải thích cơ chế tạo mảng 2 chiều trong code
Để đơ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 đó
1 Like
bản chất của mảng 2 chiều là mảng một chiều
1 Like
ý 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];
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?