Như chúng ta đã biết, Java, C# khai báo mảng 2 chiều m x n như sau:
int[][] arr = new int[m][];
for (int i = 0; i < m; i += 1)
arr[i] = new int[n];
Cách khai báo trên cho thấy: arr
là mảng 1 chiều, mỗi phần tử của arr
có kiểu int[]
Cấu trúc khai báo mảng của một kiểu dữ liệu là
T[] t = new T[length];
Vậy tại sao khai báo mảng nhiều cấp thì ngôn ngữ lại không tuân thủ quy tắc này, lẽ ra phải là
int[][] arr = new int[][m];
Có vẻ như việc này có liên quan đến cách khai báo mảng tĩnh của C++, tuy nhiên cách khai báo mảng động sử dụng new
và con trỏ của C++ vẫn tuân thủ quy tắc T[]
.
Mọi người nghĩ sao, có ai cảm thấy “ngứa mắt” giống như mình không :))