2012-08-16 30 views
6

new T[7] tạo một mảng 7 T s. Nếu chúng tôi thay thế T bằng int[5], chúng tôi nhận được new int[5][7] sẽ tạo một mảng gồm 7 mảng gồm 5 số nguyên. Tuy nhiên, nó tạo ra một mảng gồm 5 mảng 7 số nguyên thay thế. Có lý do chính đáng nào cho việc này không? Nó sẽ không có ý nghĩa hơn nếu nó là cách khác xung quanh?thứ tự kích thước khi tạo mảng đa chiều

+3

Tất cả ngôn ngữ giống như C sử dụng [thứ tự hàng chính] (http://en.wikipedia.org/wiki/Row-major_order). Fortran sử dụng cột chính. Hãy suy nghĩ về nó như là * kích thước quan trọng nhất đầu tiên *. – Mysticial

+0

Tôi nghĩ câu hỏi là hoàn toàn phù hợp, một nguồn gây nhầm lẫn thường xuyên. Đó là một trong những lý do (nhiều) cho tôi để tránh các mảng đa chiều 'trần' trong C++ – sehe

+1

Khi bạn thực hiện tra cứu, các chỉ mục theo thứ tự giống như kích thước, mà tôi nghĩ có ý nghĩa hơn so với cách khác. –

Trả lời

1

tôi nghĩ về nó như kích thước:

height width depth 
int[5] [7] [8] 

Hoặc

rows cols 
int[5] [7] 

Đó là lý do tại sao nó có ý nghĩa cho nó được 5 mảng của 7 ints với tôi. Có một loại trật tự tự nhiên.

Tôi nghĩ rằng ví dụ của bạn cũng có ý nghĩa và rất hợp lý. Vì vậy, tôi đoán nó chỉ là một vấn đề của ý kiến: P

-1

int ints [][] = new int [5][7]; có thể được viết là int [] ints [] = new int [5][7]; có thể điều này sẽ cho bạn biết rằng nó có ý nghĩa rằng đó là 5 mảng 7 số nguyên. ;)

+0

Điều đó có đúng không? Ngoài ra, tôi không thấy nó giúp như thế nào – sehe

+0

Đây là một câu trả lời thú vị, 1 từ tôi. – fredoverflow

+0

+1 vui nhộn. Tôi thậm chí không thể phân tích cú pháp cú pháp. –

Các vấn đề liên quan