01/10/2018, 08:20

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

Nguyễn Văn Cao viết 10:22 ngày 01/10/2018

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)

Nguyen Trong Dung viết 10:21 ngày 01/10/2018

vị trí của p hay vị trí mà con trỏ p trỏ tới ạ ?

Tao Không Ngu. viết 10:24 ngày 01/10/2018

Hi Nguyen Trong Dung.
Gia tri cua p.

Nguyen Trong Dung viết 10:34 ngày 01/10/2018

p=&a;
giá trị của p là địa chỉ của a = &a;
vậy sao (3) != (1)

Nguyễn Xuân Phúc viết 10:34 ngày 01/10/2018

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

Nguyen Trong Dung viết 10:27 ngày 01/10/2018

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.

Nguyễn Xuân Phúc viết 10:31 ngày 01/10/2018

thì viết p+1 thôi
(ghét nhất cái vụ 20chars -_-)

Shin viết 10:31 ngày 01/10/2018

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*

rogp10 viết 10:22 ngày 01/10/2018

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

Bài liên quan
0