Biểu đồ so sánh
Cơ sở để so sánh | Con trỏ | Tài liệu tham khảo |
---|---|---|
Căn bản | Con trỏ là địa chỉ bộ nhớ của một biến. | Tham chiếu là một bí danh cho một biến. |
Trả về | Biến con trỏ trả về giá trị nằm ở địa chỉ được lưu trong biến con trỏ, trước dấu con trỏ '*'. | Biến tham chiếu trả về địa chỉ của biến đứng trước dấu tham chiếu '&'. |
Người vận hành | *, -> | & |
Tài liệu tham khảo không | Biến con trỏ có thể tham khảo NULL. | Biến tham chiếu không bao giờ có thể tham chiếu đến NULL. |
Khởi tạo | Một con trỏ chưa được khởi tạo có thể được tạo ra. | Một tài liệu tham khảo chưa được khởi tạo không bao giờ có thể được tạo ra. |
Thời điểm khởi tạo | Biến con trỏ có thể được khởi tạo tại bất kỳ thời điểm nào trong chương trình. | Biến tham chiếu chỉ có thể được khởi tạo tại thời điểm tạo. |
Tái cấp hóa | Biến con trỏ có thể được khởi tạo lại nhiều lần theo yêu cầu. | Biến tham chiếu không bao giờ có thể được khởi tạo lại một lần nữa trong chương trình. |
Định nghĩa con trỏ
Một con trỏ con trỏ là một biến giữ vị trí bộ nhớ của một biến khác. Các toán tử được sử dụng bởi biến con trỏ là * và ->. Khai báo biến con trỏ chứa kiểu dữ liệu cơ sở theo sau dấu '*' và tên biến.
gõ * var_name;
Hãy để chúng tôi hiểu con trỏ với sự giúp đỡ của một ví dụ.
int a = 4; int * ptr = & a; cout <Ở đây, chúng ta có một biến số nguyên a và, một biến con trỏ ptr lưu địa chỉ của biến a.
Số học con trỏ
Biến con trỏ có thể được vận hành với hai toán tử số học là phép cộng trừ trừ và trừ trừ. Việc bổ sung được gọi là Tăng gia, và phép trừ được gọi là Giảm phân rã. Khi một biến con trỏ được tăng lên, nó trỏ đến vị trí bộ nhớ của biến tiếp theo của loại cơ sở. Khi một biến con trỏ bị giảm, nó trỏ đến vị trí bộ nhớ của biến trước đó của loại cơ sở. Do đó, một mảng có thể được truy cập hiệu quả bằng một biến con trỏ.
Nhiều cảm ứng
Một con trỏ trỏ đến biến con trỏ khác đang trỏ đến giá trị đích. Loại con trỏ này luôn được khởi tạo với địa chỉ của một biến con trỏ khác. Việc khai báo một con trỏ tới một con trỏ như sau.
gõ ** var_name;Hãy nghiên cứu nó với một ví dụ.
int a = 4; int * ptr1 = & a; int ** ptr2 = & ptr1; cout <Con trỏ hàm
Như chúng ta biết rằng một hàm không phải là một biến, nhưng nó vẫn có một vị trí bộ nhớ, có thể được gán cho một biến con trỏ. Khi một con trỏ trỏ đến một hàm, thì hàm đó có thể được gọi với con trỏ hàm đó.
Những điểm quan trọng cần nhớ về con trỏ.
- Biến con trỏ có thể được tạo mà không cần khởi tạo, và nó có thể được khởi tạo ở bất cứ đâu trong chương trình.
- Biến con trỏ có thể được khởi tạo lại thành một biến khác.
- Biến con trỏ có thể tham khảo NULL.
Định nghĩa của tài liệu tham khảo
Biến tham chiếu được sử dụng để chỉ biến được gán cho biến tham chiếu đó. Toán tử được sử dụng bởi biến tham chiếu là '&'. Khai báo một biến tham chiếu chứa loại cơ sở theo sau dấu '&' và sau đó là tên biến.
loại & giới thiệu_var_name = var_ name;Ở đây, kiểu là kiểu dữ liệu, toán tử & xác nhận rằng đó là biến tham chiếu. Tham chiếu_var_name là tên của biến tham chiếu. Var_name là tên của biến mà chúng tôi muốn biến tham chiếu tham chiếu.
Hãy để chúng tôi hiểu biến tham chiếu với sự giúp đỡ của một ví dụ.
int a = 4; int & b = a; // b đề cập đến ab = 6; // bây giờ a = 6Ở đây, biến kiểu int được gán một giá trị 4. Biến tham chiếu được gán biến a, tức là b là bí danh của a. Bây giờ, khi chúng ta gán giá trị khác cho b, chúng ta sửa đổi giá trị của a. Do đó, có thể nói rằng những thay đổi được thực hiện cho một biến tham chiếu cũng sẽ xảy ra trong biến được tham chiếu bởi biến tham chiếu đó.
Điểm quan trọng nhất là biến tham chiếu phải được khởi tạo tại thời điểm tạo. Khi biến tham chiếu được khởi tạo với một biến, nó không thể được khởi tạo lại để tham chiếu biến khác. Thời điểm bạn gán giá trị cho biến tham chiếu, bạn gán giá trị đó cho biến mà biến tham chiếu trỏ tới. Biến tham chiếu không bao giờ có thể tham chiếu đến NULL. Số học không thể được thực hiện trên một biến tham chiếu.
Biến tham chiếu có thể được sử dụng theo ba cách:
- Là một giá trị trả về hàm.
- Là một tham số chức năng.
- Như một tài liệu tham khảo độc lập.
Sự khác biệt chính giữa con trỏ và tham chiếu
- Tham chiếu giống như tạo một tên khác để chỉ một biến để nó có thể được giới thiệu với các tên khác nhau. Mặt khác, một con trỏ chỉ đơn giản là một địa chỉ bộ nhớ của một biến.
- Một biến con trỏ nếu được đặt trước bởi '*' trả về giá trị của biến có địa chỉ được lưu trong biến con trỏ. Một biến tham chiếu khi được đặt trước bởi '&' trả về địa chỉ của biến đó.
- Toán tử con trỏ là * và -> trong khi đó, toán tử tham chiếu là &.
- Một biến con trỏ nếu không mang bất kỳ địa chỉ của biến thì nó trỏ đến null. Mặt khác, một biến tham chiếu không bao giờ có thể tham chiếu đến Null.
- Bạn luôn có thể tạo một biến con trỏ đơn vị hóa, nhưng chúng tôi tạo một tham chiếu khi chúng ta cần một bí danh của một số biến để bạn không bao giờ có thể tạo ra một giới thiệu đơn vị hóa.
- Bạn có thể xác định lại một con trỏ nhưng một khi bạn khởi tạo lại thì bạn không thể xác định lại nó một lần nữa.
- Bạn có thể tạo một con trỏ trống và khởi tạo nó bất cứ lúc nào nhưng bạn phải khởi tạo sự điều chỉnh chỉ khi bạn tạo ra một giới thiệu.
Chú thích:
Java không hỗ trợ con trỏ.
Phần kết luận
Cả con trỏ và tham chiếu đều được sử dụng để trỏ hoặc tham chiếu một biến khác. Nhưng cả hai khác nhau trong cách sử dụng và thực hiện.