30/09/2018, 16:27
Cách truyền mảng 3 chiều vào hàm
hàm 3 chiều thì mình để prototype tương tự luôn hay sao nhỉ input(a[][3][3])
Bài liên quan
hàm 3 chiều thì mình để prototype tương tự luôn hay sao nhỉ input(a[][3][3])
Oh please, đừng dùng 3 chiều
Đoạn nào @Byn
hỏi cho biết anh ơi
Em có thể thử Anh nhớ anh có làm thử và nó chạy được đó. Bản chất là ta nên cho cả 3 chiều dài vào. Nhưng đối với con trỏ đầu tiên, tức chiều đầu tiên, ta có thể lơ đi cũng được
Kiểu như khi ta có mảng 1 chiều, thức là con trỏ đầu tiên, ta không cần phải truyền vào chiều dài. Nhưng chiều thứ 2, thứ 3, về bản chất, nó “đi theo”, “lệ thuộc” vào chiều đầu tiên. Nên ta phải cho biết chiều dài của nó.
Nếu không compiler nó sẽ bị “confuse”, không biết chuẩn bị bao nhiêu vùng nhớ cho đủ. Bởi vì chiều 2 và 3 cần phải biết trước chiều dài, để có thể biết được ta cần phải di chuyển bao nhiêu byte để đến phần tử tiếp theo của chiều thứ 1.
P/S: Anh cũng không phải là chuyên nha trong mảng 2-3 chiều, chưa nghiên cứu sâu, chỉ nhớ mang máng là anh có làm thử 1 vài ví dụ và ngẫm ra như vậy. Nếu sau này có điều kiện nghiên cứu sâu sẽ giải thích sâu hơn.
em cũng nghĩ là do cách bố trí bộ nhớ luôn trên một đoạn thẳng nên cần một cái “đơn vị”
ví dụ như:
int a[] thì đơn vị cũng 4 byte
int a[][100] thì đơn vị là 4*100 byte
em nghĩ là do cách sắp xếp chiều trên bộ nhớ. chiều đầu tiên chỉ là vị trí để bắt đầu một “đơn vị”
p/s: có lẽ move qua topic khác thôi anh ơi
Em nghĩ vậy là đúng rồi đó @Rok_Hoang. Mảng có index, mà mảng bản chất cũng là con trỏ thôi. Nhưng ở dạng thể hiện khác. Trong lịch sử hình thành C, Dennis Ritchie không muốn phức tạp hóa vấn đề nên sử dụng con trỏ để thể hiện mảng.
Thao tác trên con trỏ cần phải biết kích thước của vùng nhớ nó trỏ tới để có thể “nhảy” tới vùng nhớ tiếp theo. Tương tự như mảng, để đến index tiếp theo ta cần biết được kích thước của 1 ô nhớ là bao nhiêu.
Đối với mảng 1 chiều, chỉ cần coi thử cái kiểu dữ liệu là gì
Đối với mảng nhiều chiều, thì ta phải coi cái kiểu dữ liệu và độ dài của chiều con
À, mà sao @Rok_Hoang không thử giải quyết cái thắc mắc bằng một chương trình C để demo xem thử nhỉ Sẽ thú vị đấy.