Giá trị của địa chỉ của giá trị của địa chỉ p. Để đơn giản, bạn cứ thử nhớ lại độ ưu tiên của các thao tác trên p: ((&((&p))))
Giả sử ô nhớ của pointer p đang là A190, ô nhớ của pointer p đang trỏ tới là B200 thì:
( * ( & ( * ( &p ) ) ) )
( * ( & ( * ( A190 ) ) ) )
( * ( & ( * A190 ) ) )
( * ( & ( "B200" ) ) )
( * ( & "B200" ) )
( * ( A190 ) )
( * A190 )
( "B200" )
- Nếu print ra dạng int, ta sẽ có địa chỉ của ô nhớ B200
- Nếu print ra dạng string, ta sẽ có giá trị mà ô nhớ B200 đang chứa, tức là “hello”
Ghi chú:
- &p = Địa chỉ của pointer p (không phải là địa chỉ mà pointer p đang trỏ tới)
- *(A190) = Giá trị của ô nhớ có địa chỉ A190. Rủi thay, ô A190 là 1 pointer
- “B200” = Giá trị của ô nhớ có địa chỉ A190. Do A190 là pointer, nên giá trị lưu trong vùng nhớ A190 là địa chỉ mà pointer đang trỏ tới, tức là địa chỉ B200.
Nếu có gì sai sót, mọi người đóng góp để mình biết nhé. Thân chào và quyết thắng.