Tôi muốn thêm một lý do khác để không thực hiện việc này. Nếu bạn đang sử dụng con trỏ theo cách này, và nếu bạn có một lỗi phụ thuộc vào thứ tự của các phần tử của một thùng chứa, thì nó sẽ rất khó tìm. Ngay cả khi chương trình của bạn có vẻ là hoàn toàn xác định, nó sẽ không được. Thứ tự của các phần tử trong một thùng chứa phụ thuộc vào thuật toán mà bộ cấp phát bộ nhớ sử dụng, điều này hoàn toàn nằm ngoài tầm kiểm soát của bạn. Nếu bạn chạy cùng một ví dụ muliple lần mà không cần khởi động lại chương trình của bạn, một số có thể thất bại và những người khác thành công.
Đây là tiếng nói của trải nghiệm cay đắng. Tôi đã làm điều này với một dự án trình gỡ lỗi một lần, nơi tôi có các thùng chứa đầy các ký hiệu C++. Khi tôi cần sắp xếp các ký hiệu, tôi đã kết thúc với các biểu tượng khác nhau, nhưng có cùng tên (nghĩ rằng các hàm bị quá tải) và chúng giống nhau về mọi mặt khác. Vì vậy, trong trường hợp này tôi so sánh chúng như một phương sách cuối cùng bằng địa chỉ của đối tượng ký hiệu. Tôi chạy vào một số lỗi mà rõ ràng là không xác định, trong đó không xác định được gây ra bởi hiện tượng này. Đôi khi phải mất hơn 10 hoặc 15 lần để tái tạo các vấn đề. Cuối cùng tôi đã dành thời gian để loại bỏ phân loại theo địa chỉ, và điều đó đã cứu tôi rất nhiều rắc rối trong thời gian dài hơn.
Với điều đó đã nói, tôi sẽ không nói rằng tôi chưa thực hiện việc này gần đây. Nhưng mỗi khi tôi làm điều đó tôi cảm thấy như đó là một sai lầm.
Nguồn
2012-12-06 18:35:40
btw, bạn có muốn sử dụng các địa chỉ làm khóa hoặc giá trị của những thứ mà chúng trỏ đến là khóa không? Trong trường hợp thứ hai, bạn sẽ phải cung cấp bộ so sánh tùy chỉnh – sellibitze
liên quan: [kiểm tra nếu con trỏ chỉ trong một mảng] (http://stackoverflow.com/questions/4657976/) – fredoverflow