em có 1 đoạn code như sau:

theo em được hiểu. Nếu viết things *pt thì phần pt sẽ là địa chỉ của con trỏ và phần *pt là giá trị mà con trỏ chỉ đến.
vậy nếu viết như trên (*pt = &grubnose) thì mình gắn giá trị địa chỉ của grubnose vào giá trị của con trỏ.
như vậy là khác nhau về loại ở 2 vế (giá trị vs địa chỉ). Tuy nhiên em đánh ở code vẫn chạy được chỉ là không hiểu tại sao?
Hỏi về address operator &
Viết vậy đúng rồi bạn
câu đó là câu khai báo nên int* phải hiểu là kiểu con trỏ int.
1 Like
mình hiểu là code đúng vì mình đã thử chạy code. Tuy nhiên mình ko hiểu ý nghĩa của câu lệnh
int * pt = &grubnose
Như bạn nói *pt là kiểu con trỏ thing. và giá trị của nó theo mình hiểu là giá trị mà con trỏ *pt chỉ vào
còn phần &grubnose là giá trị địa chỉ của grubnose. nên mình thấy 2 cái lệnh nhau nhưng ko hiểu tại sao gắn vào được với nhau.??? Đó là điều mình cần giải thích
Bạn nên hiểu dấu * đấy theo 2 trường hợp:
- Dùng khi khai báo
Nếu viết làint* pthoặcint *pthoặcint * ptthì có nghĩa là bạn đang khai báo biếnptlà con trỏ. Dấu*ở đây để chỉ ra bạn đang khai báo biến con trỏ. Và do đó biểu thức theo sau phải là địa chỉ. - Dùng khi lấy giá trị của biến con trỏ
Sau khi biến con trỏ đã được khai báo, bạn viết*pt = 100hoặcprintf('%d', *pt)thì ở đây mới là để lấy giá trị mà con trỏ trỏ tới.
3 Likes
83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?