Ví dụ như vị trí của p là 1000002 chẳng hạn , và con trỏ đó có kiểu int thì khi bạn tăng p+1 thì vị trí con trỏ sẽ là 1000006 vì kiểu int chứa 4 bytes (hay sizeof(int)=4)
Bạn coi kỹ lại tài liệu nhé: công thức: p + 1 = p + 1sizeof(type), vậy p + x = p + xsizeof(type)
ở (3): p + sizeof(int) = p + sizeof(int)sizeof(int)
ở (1): p += 1 = p + 1 = p + 1sizeof(int)
vậy thì sao (3) giống (1) được
thanks anh. E hiểu cách a giải thích. Nhưng a có thể giải thích thêm dùm e rằng p + 1sizeof(type) có cách nào sử dụng nó trong câu lệnh printf k ạ ?
Như là e k muốn printf("%p",p); mà muốn printf("%p",p + 1sizeof(type) ). nhưng khi viết lại sai r, vì lúc này n hiểu là p+size(type) chứ k phải là p+1.
Ví dụ như vị trí của p là 1000002 chẳng hạn , và con trỏ đó có kiểu int thì khi bạn tăng p+1 thì vị trí con trỏ sẽ là 1000006 vì kiểu int chứa 4 bytes (hay sizeof(int)=4)
vị trí của p hay vị trí mà con trỏ p trỏ tới ạ ?
Hi Nguyen Trong Dung.
Gia tri cua p.
p=&a;
giá trị của p là địa chỉ của a = &a;
vậy sao (3) != (1)
Bạn coi kỹ lại tài liệu nhé: công thức: p + 1 = p + 1sizeof(type), vậy p + x = p + xsizeof(type)
ở (3): p + sizeof(int) = p + sizeof(int)sizeof(int)
ở (1): p += 1 = p + 1 = p + 1sizeof(int)
vậy thì sao (3) giống (1) được
thanks anh. E hiểu cách a giải thích. Nhưng a có thể giải thích thêm dùm e rằng p + 1sizeof(type) có cách nào sử dụng nó trong câu lệnh printf k ạ ?
Như là e k muốn printf("%p",p); mà muốn printf("%p",p + 1sizeof(type) ). nhưng khi viết lại sai r, vì lúc này n hiểu là p+size(type) chứ k phải là p+1.
thì viết p+1 thôi
(ghét nhất cái vụ 20chars -_-)
bạn cũng có thể ép kiểu của p về int sau đó + vào rồi ép lại kiểu int*
Xong rồi sao 1 phát là error
Chỗ đó (chỉ chỉ lên #1) có thể hiểu là tăng con trỏ p lên 1 đơn vị tức là trỏ ngay slot bên cạnh vì vậy ta có công thức sau:…