số Trong C, bạn chỉ có thể có được một con trỏ đến một khu vực lưu trữ (có nghĩa là một biến, một phần tử mảng, hoặc con trỏ khác; họ gọi là những "l-giá trị"), không cho bất kỳ biểu hiện nào. Bạn không thể nhận được một con trỏ tới một biểu thức không có vùng lưu trữ được xác định (như một phần bổ sung hoặc kết quả của một cuộc gọi hàm). Tuy nhiên, cần lưu ý rằng C++ làm rối các quy tắc này với các tham chiếu, nhưng vì mục đích rõ ràng, tôi sẽ bỏ nó ra.
Con trỏ không phải là phép thuật: cuối cùng, chúng chỉ là số nguyên. Vì vậy, khi bạn nhận được con trỏ của một con trỏ, nó giống như bạn đã nhận được con trỏ của một số nguyên. Nó không có hậu quả nhiều hơn nữa. Ví dụ:
Ví dụ: nếu bạn nhận con trỏ đến a
trong mã của mình, bạn chỉ cần sao chép địa chỉ này trong một biến khác. Không có gì ngăn bạn thay đổi biến số đã nói:
int a;
int* p = &a;
p = NULL;
Và thực hiện việc này, bạn a
sẽ vẫn không thay đổi gì. Tất cả những gì bạn có thể thay đổi về a
là giá trị của nó. Địa chỉ của nó là bất biến. Bất cứ điều gì khác sẽ ngụ ý rằng &a = NULL
(hoặc bất kỳ giá trị con trỏ khác) sẽ làm việc, mà không.
'b = & pointer' là cách chính xác để lấy địa chỉ của con trỏ tới' a'. –