Tôi đã gặp may mắn với các con trỏ động khi tôi đưa chúng đến 2 kích thước và cao hơn. Ví dụ tôi muốn một con trỏ đến một mảng 2D. Tôi biết rằng:Cách chính xác để khởi tạo một con trỏ động tới một mảng đa chiều?
int A[3][4];
int (*P)[4] = A;
Hoàn toàn hợp pháp (ngay cả khi tôi không hiểu rõ lý do). Cân nhắc rằng:
int *P = new int[4];
tác phẩm, tôi tưởng tượng rằng:
int **P = new int[5][7];
cũng sẽ làm việc, nhưng nó không phải. Mã này khẳng định lỗi:
Error: A value of type "(*)[7]" cannot be used to initialize an entity of
type "int **"
Bằng nhìn thấy điều này phần mới trở thành một con trỏ đến một mảng của 7 số nguyên tôi đã thực hiện:
int (*P)[4] = new int[7][4];
Và điều này không làm việc nhưng nó không phải là những gì tôi muốn đạt được . Bằng cách làm như thế tôi bị giới hạn ít nhất bằng cách sử dụng một giá trị không đổi cho bất kỳ thứ nguyên tiếp theo nào, nhưng tôi muốn nó được định nghĩa đầy đủ vào thời gian chạy và do đó "động".
Làm cách nào tôi có thể thực hiện và làm cho con trỏ đa chiều này hoạt động?
Đừng quên xóa chúng – doctorlove
'std :: vector> ' –
Chad