Cần giải thích về việc tăng giảm con trỏ

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) :smiley:

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 + 1
sizeof(int)
vậy thì sao (3) giống (1) được

1 Like

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 + 1
sizeof(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 -_-)

1 Like

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 :smiley:

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 :smiley: vì vậy ta có công thức sau:…

83% thành viên diễn đàn không hỏi bài tập, còn bạn thì sao?