int x = 10; int y = 4;
int *p = &x; //Gan con tro p voi dia chi cua bien x
p--; // -- di thi se gan con tro p vao dia chi bien y
printf("%d", *p);
nếu bạn hiểu về cấu trúc stack mình sẽ giải thích như sau
int x = 10
thực chất là đưa 10 vào vị trí ESP - 4 (ESP là con trỏ của stack)
int y = 4
thực chất là đưa 4 vào vị trí ESP - 8 (ESP là con trỏ của stack)
(tại sao là -8 vì biến của sự khai báo là Int mà int là có độ lớn dữ liệu thực sự là 4 byte)
dĩ nhiên nếu int z= 1 chất là đưa 1 vào vị trí ESP - C (ESP là con trỏ của stack) (C=8+4byte tiếp theo)
thì p=p-2 () lúc này *p sẽ mang giá trị là 1
=> điều bot muốn nói là khi C biên dịch thanh mã máy ta dùng Assembly để đọc mã đấy thì sẽ tường minh tất cả vì câu hỏi có mục đích hướng đến cội nguồn của sự thật nên mình tạm thời đề cập
giải quyết lỗi đó
*p = *p -1;