Xin chào và chào mừng.
Trong bài giảng này tôi muốn nói về mảng nhiều chiều.
Cho đến thời điểm này, nếu bạn nghĩ về một mảng, bạn vừa nói
một mảng là một biến có thể lưu trữ nhiều loại dữ liệu.
Nó có thể trở nên phức tạp hơn thế.
Về cơ bản bạn có thể có nhiều kích thước của một mảng.
Vì vậy, nếu bạn chỉ có một mảng tuyến tính đó là những gì chúng ta đã thảo luận cho đến nay, được
gọi là một chiều duy nhất.
Và chúng tôi biết đó là một vì nó chỉ
có một dấu ngoặc với một kích thước.
Ngôn ngữ c cho phép các mảng của bất kỳ chiều nào để bị phạt.
Vì vậy, đây là loại suy nghĩ giống như một mảng lồng nhau, mảng của một mảng.
Vì vậy, mảng hai chiều là phổ biến nhất.
Nhưng bạn thực sự có thể làm mảng ba
chiều, mảng bốn chiều, mảng năm chiều, nhưng không có nhiều trường
hợp sử dụng cho 3 4 và 5.
Thực sự, bạn sẽ có một mảng đơn chiều mà bạn sử
dụng trong chương trình của mình hoặc mảng hai chiều.
mảng hai chiều là phổ biến vì về cơ bản chúng
đại diện cho các hàng và cột trong bảng tính, đó là cách bạn
có thể hình dung nó hoặc một ma trận hoặc một bảng.
Đó là một mảng hai chiều, bạn có hàng và bạn có cột.
Vì vậy, bạn có thể lưu trữ nhiều dữ liệu hơn hơn
một mảng một chiều bằng cách chỉ định các kích thước.
Nhưng nó rất áp dụng bởi vì nó trông giống như một ma trận.
Và có những ứng dụng bạn có thể muốn viết có khái niệm này về ma trận, cụ
thể là một ứng dụng toán học sẽ có liên
quan nhất ở đây.
Nhưng bạn có thể sử dụng để làm hai chiều mảng cho nhiều thứ khác nhau.
Một ví dụ là ma trận.
Nhưng một lần nữa, hãy hình dung nó như một cái bàn.
Mảng hai chiều là được khai báo giống như
cách mảng một chiều.
Sự khác biệt duy nhất là bạn bây giờ có một bộ dấu ngoặc khác.
Vì vậy, trong ví dụ này, chúng tôi đang khai báo một mảng có tên là
ma trận kiểu int có 4 hàng và 5 cột.
Điều đó có nghĩa là bạn có thể lưu trữ 20 phần tử bên trong mảng hai chiều đó.
Vì vậy, bạn nên biết cách mỗi kích thước được chỉ định bằng
cặp dấu ngoặc vuông riêng của nó.
đó là cách bạn có thể dễ dàng nhận ra một mảng có bao nhiêu thứ nguyên.
Nếu bạn có 3 dấu ngoặc ở đó, sẽ là một mảng ba chiều.
Nếu bạn có 4, nó sẽ là bốn.
Cái này có 2 nên là 2.
Và cho đến khi sớm hơn các bài giảng chỉ có một, vì vậy chúng tôi biết rằng
đó là một chiều duy nhất.
Vì vậy, hãy nhìn vào dấu ngoặc, chú ý đến điều đó.
Một lần nữa 4 hàng, 5 cột, tổng số 20 phần tử.
Để khởi tạo mảng hai chiều, nó sẽ được khởi tạo theo cùng một cách
thức một chiều mảng, cùng một kiểu cú pháp, bạn chỉ cần thêm
nhiều hơn nữa.
Vì vậy, khi bạn liệt kê các yếu tố để khởi tạo, các giá trị
sẽ được liệt kê theo hàng.
Và sự khác biệt ở đây là khi bạn đặt các
giá trị ban đầu cho mỗi hàng, bạn sẽ làm nó nằm giữa dấu ngoặc nhọn, dấu ngoặc nhọn và sau đó
bạn sẽ bao gồm tất cả các hàng giữa các dấu ngoặc nhọn.
Vì vậy, nó sẽ xem xét một cái gì đó như thế này.
Nếu chúng ta tạo một mảng số, có 2 thứ nguyên, 3 hàng
và 4 cột và chúng tôi muốn khởi tạo nó, tất cả những gì bạn
phải làm là đặt bên trong dấu ngoặc nhọn toàn bộ mảng và sau đó thêm dấu ngoặc nhọn lồng
nhau bên trong cho mỗi hàng.
Vì vậy, ở đây chúng tôi đang khởi tạo các giá trị 0 con 0 đến 10, 0 con 1 đến 20, 0 con 2
đến 30 và 0 con 3 đến 40.
Và đó là cách bạn truy cập mảng đa chiều cũng vậy.
Bạn truy cập chúng bằng hàng trong cột.
Bạn chỉ cần nhớ rằng nó dựa trên 0.
Vì vậy, phía trên bên trái sẽ là hàng 1, cột 1 sẽ là 00
và bằng 10.
Hàng 1 cột 2 sẽ là bằng 20, nhưng bạn sẽ
truy cập nó dưới dạng số 0 phụ 1.
Bởi vì mảng đầu tiên chứa 3 các hàng bạn truy cập đó là số bạn chỉ định cho số hàng
và thì số cột là đặc tả tiếp theo
để truy cập mảng.
Nhưng cá nhân hóa là khá đơn giản, chỉ cần phân
tách các thứ bằng chú thích bằng dấu ngoặc.
Và truy cập chúng, bạn sẽ truy cập nó giống như bạn truy cập vào một mảng bình thường ngoại trừ
bạn bây giờ bạn đang truy cập khái niệm này về một hàng trong một cột.
Vì vậy, việc sử dụng các cặp bên trong của niềng răng thực sự là tùy chọn, nhưng bạn
nên sử dụng nó để dễ đọc.
Nếu bạn không cung cấp các niềng răng đó, bạn thực
sự có thể chỉ cung cấp 10 20 30 40 15 25 35, tất cả chỉ liên tục, nhưng rất khó để hình dung những gì
bạn đang khởi tạo.
Là một lập trình viên, khả năng đọc là rất, rất quan trọng vì nó làm tăng
chất lượng của mã nó dễ dàng hơn để duy trì mã.
Khi tôi nhìn vào điều này ngay tại đây, Tôi có thể dễ dàng
xác định, đặc biệt là với các nhận xét, tôi khởi tạo thành, giá trị nào và
những hàng nào sẽ khởi tạo.
Nếu tôi có nó như một dòng duy nhất chỉ là những con số liên tiếp,
tôi sẽ bị lạc rất nhanh.
Vì vậy, mặc dù dấu ngoặc bên trong không cần thiết, hãy sử dụng chúng.
Như với mảng một chiều, không bắt buộc phải khởi
tạo toàn bộ mảng.
Bạn chỉ có thể khởi tạo các khu vực nhất định.
Vì vậy, trong ví dụ này, chúng tôi tạo mảng hai chiều
với 4 hàng và 5 cột.
Chúng tôi chỉ khởi tạo 3 phần tử đầu tiên của mỗi hàng.
Vì vậy, hàng 1 cột 1 là 10, hàng 1 cột 2 là 5 và hàng 1 cột 3 là 3 âm,
và tương tự cho cột thứ hai
và tiếp theo là 900 32 31 008.
Đối với những cái mà chúng tôi không đặt các giá trị thứ 4 và
thứ 5 của mỗi hàng, những giá trị này thực sự sẽ được đặt tự động thành 0 vì chúng tôi
đã loại bỏ chúng.
Và trong trường hợp này, bạn thực sự phải cung cấp các dấu ngoặc nhọn,
các dấu ngoặc nhọn bên trong.
Bởi vì ở đây nếu chúng ta đã làm nó, quá trình
khởi tạo sẽ được hoàn thành.
Bởi vì nếu bạn không có dấu ngoặc nhọn, nó sẽ
làm điều đó liên tiếp.
Vì vậy, những gì sẽ xảy ra là
đây thực sự sẽ khởi tạo 12 phần tử đầu tiên.
Vì vậy, nó sẽ khởi tạo tất cả các phần tử trong hàng đầu tiên, tất cả các phần tử
trong hàng thứ hai và sau đó 2 phần tử đầu tiên trong hàng thứ
ba và sau đó là các phần tử còn lại trong hàng thứ ba, phần tử
còn lại trong hàng thứ 4 sẽ là 0.
Một lần nữa, đây là một mảng 4 hàng và 5 cột.
Nó sẽ làm chúng liên tiếp.
Vì vậy, đừng quên niềng răng nếu bạn là nếu bạn chỉ muốn
chỉ định các phần tử khởi tạo nhất định.
Bạn cũng có thể làm các trình khởi tạo được chỉ định.
Hãy nhớ rằng, đây là khái niệm C99.
Đó là tùy chọn trong C11, nơi bạn có thể chỉ
định các chỉ số cụ thể sẽ được khởi tạo.
Vì vậy, bạn có thể sử dụng các đăng ký trong danh sách khởi tạo, giống như trong mảng
một chiều nếu bạn muốn để thực hiện một trình khởi tạo được chỉ định, bạn chỉ cần làm một
cái gì đó như thế này.
Vì vậy, ở đây chúng tôi đang khai báo ma trận của chúng tôi mảng 4 hàng và 3 cột, nhưng
chúng tôi đang thực sự chỉ định rằng 0 0 bằng 1, 1 1 bằng 5
và 2 2 bằng 9.
Vì vậy, khi chúng ta nói 2 2 một lần nữa, điều gì chúng ta đang nói là hàng 2 thực
sự là hàng 3 vì chúng ta bắt đầu từ 0, cột 2 mà thực sự là cột 3.
Một lần nữa, hãy hình dung điều này như là một bảng hoặc một bảng tính.
Và việc truy cập các phần tử bắt đầu ở góc trên cùng bên trái.
Nhưng nếu bạn hiểu rằng 4 đại diện cho các hàng và 3
đại diện cho các cột, nó khá trực quan sau đó.
Vì vậy, những gì điều này đang làm là nó khởi tạo 3 phần tử được chỉ ra
của ma trận thành các giá trị xác định.
Nhưng những gì bạn nên chú ý ở đây là cú pháp.
Tất cả các giá trị không xác định ở đây sẽ là 0 theo mặc định.
Vì vậy, điều này chỉ diễn ra để khởi tạo 3 giá trị.
Mỗi tập hợp các giá trị mà bạn do khởi tạo sẽ là các phần
tử trong một hàng nằm giữa các dấu ngoặc nhọn.
Và sau đó là toàn bộ quá trình khởi tạo đi giữa một cặp niềng răng khác.
Vì vậy, bạn thấy rằng chúng tôi có dấu ngoặc nhọn ở bên ngoài giống như
khởi tạo bình thường và sau đó chúng ta có các dấu
ngoặc để truy cập vào mảng bên trong.
Và sau đó chúng ta có dấu phẩy để tách từng hàng và từng tập hợp giá trị
hàng được tách biệt từ tập hợp tiếp theo bằng dấu phẩy.
Vì vậy, các giá trị được tách biệt và cả các chỉ số hàng.
Bây giờ chỉ vì chúng tôi đã nói rằng chúng tôi có 2 chiều
và chúng tôi đã nói về điều đó; bạn có thể thực sự có nhiều chiều khác.
Mọi thứ tôi đã nói về 2 chiều cũng áp dụng
cho 3 chiều 4 chiều 5 chiều.
Vì vậy, nếu bạn muốn khai báo một
Mảng 3 chiều, bạn sẽ làm điều đó với 3 dấu ngoặc vuông.
Vì vậy, đây là một mảng có tên hộp kiểu int của 10 20 và 30.
Bạn có thể muốn sử dụng một mảng
ba chiều có thể nếu bạn đang lưu trữ các giá trị xyz của một số loại, bạn có thể không cần phải làm điều này.
Mảng ba chiều và lên thực sự không phổ biến.
Như một bản tóm tắt, bạn có thể hình dung một
mảng một chiều dưới dạng một hàng dữ liệu, một hàng, hai chiều mảng dưới
dạng bảng, ma trận hoặc bảng tính, trong không gian ba chiều mảng, bạn có thể hình dung dưới dạng
một chồng bảng dữ liệu, vì vậy một chồng bảng.
Nếu bạn cần nhiều dữ liệu đó, sẽ thực sự khó truy
cập và có thể gây nhầm lẫn.
Và bất kỳ ai đang duy trì điều này chương trình cho
mảng ba chiều trở lên, nó có thể sẽ bị lạc
khi cố gắng tìm hiểu chuyện gì đang xảy ra, nhưng bạn có thể làm được một lần nữa và
nếu bạn sẽ cần lặp lại bất kỳ mảng một, hai, ba chiều, có thể bạn sẽ
sử dụng một vòng lặp.
Và bạn càng có nhiều kích thước trong vòng lặp, bạn sẽ có càng nhiều
vòng lặp lồng nhau.
Vì vậy, nếu bạn muốn xử lý mảng ba chiều, bạn sẽ
có 3 vòng lặp lồng nhau.
Và nếu bạn muốn xử lý mảng bốn chiều, bạn sẽ
có 4 vòng lặp lồng nhau.
Cho đến khi khởi tạo một mảng cao hơn 2 thứ nguyên, một lần nữa, bạn sẽ áp
dụng cùng một loại, bạn chỉ cần mở rộng
nó ra một chút.
Vì vậy, một mảng ba chiều sẽ có 3 mức niềng
răng lồng vào nhau với mức độ bên trong chứa một tập hợp các giá trị khởi tạo cho
mỗi hàng, vì vậy nó sẽ trông giống như một cái gì đó như thế này.
Ở đây chúng ta có một không gian ba chiều mảng, 2 3 và 4, về cơ bản là
một chồng bảng dữ liệu.
Và khối đầu tiên gồm 3 hàng, chúng tôi
sẽ khởi tạo và khối thứ hai gồm 3 hàng chúng tôi sẽ khởi tạo.
Vì vậy, những gì điều này đang nói là một lần nữa khối đầu tiên và khối thứ hai vì chúng tôi không
khởi tạo khối thứ ba và thứ tư, chỉ là khối đầu tiên
và khối thứ hai.
Vì vậy, chúng tôi có 4 khối và bạn có thể coi mỗi khối
là một chồng bảng dữ liệu, mỗi khối có hàng và cột.
Vì vậy, khối đầu tiên sẽ là khởi tạo chỉ 3 hàng đầu tiên, tất cả những gì
chúng ta có là 3 hàng.
Và sau đó khối thứ hai sẽ để khởi tạo 3 hàng tiếp theo, nhưng khối thứ ba
và thứ tư sẽ không được khởi tạo.
Nếu bạn muốn khởi tạo khối thứ ba
và thứ tư, bạn sẽ có nhiều niềng răng bên trong hơn, dấu ngoặc nhọn, v.v.
Điều tương tự cũng áp dụng cho những cái mà bạn không khởi tạo,
chúng sẽ được khởi tạo bằng 0.
Nhưng một lần nữa, bạn có thể thấy cách nó trở nên rất tẻ
nhạt và cũng rất khó theo dõi.
Khi bạn muốn xử lý các phần tử trong một mảng chiều, tôi đã đề cập, bạn
sẽ sử dụng các vòng lặp lồng nhau.
Một lần nữa, nó sẽ tương ứng trực tiếp đến số thứ nguyên.
Và mỗi vòng lặp sẽ lặp qua một thứ nguyên mảng.
Vì vậy, nó sẽ xem xét một cái gì đó như thế này.
Đây là một ví dụ về một mảng ba chiều.
Bạn có một vòng lặp bên ngoài và thì bạn có 2 vòng lặp bên trong.
Vòng lặp bên ngoài sẽ là mảng bên ngoài đầu tiên, vì vậy vòng lặp bên ngoài về cơ bản sẽ đi qua các hàng, hàng thứ
hai sẽ đi qua các cột và hàng thứ ba
một người sẽ đi qua các khối.
Một lần nữa, những gì bạn nên chú ý wow, điều này trở nên thực sự
nhiều lông và thực sự tẻ nhạt, thực sự nhanh chóng.
Vì vậy, hãy cố gắng tránh ba chiều mảng bốn chiều và tôi thậm chí không thấy
nhiều người sử dụng trường hợp cho nó, một và hai thực sự là tất
cả những gì bạn sẽ sử dụng.
Nhưng hiểu đa chiều mảng là một khả năng trong c, một cách lưu trữ nhiều dữ liệu hơn
và truy cập trùng tên với nhiều phần tử dữ liệu. Cảm ơn bạn.