Bạn đang cố chỉ định một biến con trỏ kép cho một mảng ... điều này đã được đề cập đầy đủ, xem here để biết thông tin về điều này. Hơn nữa, kể từ khi bạn tuyên bố
int arr[2][2] = ...;
và sau đó cố gắng gán arr
đến một con trỏ đôi
int ** ptr = ... ;
được đảm bảo để không làm việc, do đó một lỗi segmentation.Hơn nữa, tuyên bố đó int ** ptr=(int**) arr;
thực sự là truyền nhập một loại (tức là [] []) sang một loại khác (tức là **) mặc dù chúng thuộc loại 'int'. Cả hai đều khác nhau và trình biên dịch sẽ giải thích rằng rất khác nhau ...
Bạn có thể làm theo cách này:
int *ptr = &arr;
Bây giờ *(ptr + 1)
sẽ đề cập đến hàng 0'th, *(ptr + 2)
sẽ giới thiệu đến 1 'st hàng và như vậy. Các chỉ onus trên bạn là không overstep các dấu hiệu của nơi arr
được sử dụng nếu không một tràn có thể xảy ra hoặc thậm chí một lỗi phân đoạn ...
Tôi nghĩ rằng có một quy tắc tuyệt vời trong C++: "Nếu bạn có để cast, bạn không thể đủ khả năng đó" http://blogs.msdn.com/b/oldnewthing/archive/2009/10/23/9911891.aspx – SergGr