Giải thích: p chứa địa chỉ của n => số thứ tự Byte mà n được lưu, ví dụ:
n là biến nguyên (int) nên chiếm 4 Byte nên thứ tự là từ 0 đến 3 hoặc từ 1 - 4 ,hoặc … mỗi lần chạy máy sẽ hiển thị khác nhau.
p++ cũng là con trỏ nhưng số thứ tự được lưu sẽ là vị trí Byte đầu tiên của n + thêm 4.
*p là nội dung của p tức là n hay nói cách khác, sau các khai báo của bạn thì không có sự khác nhau giữa *p và n nghĩa là dùng thế nào cũng được.
*p++ tức là con trỏ p chỉ vào ô nhớ tiep theo, mà ô nhớ tiếp theo chưa được gán giá trị nên bạn cout<<*p tức là in ra giá trị. giá trị chưa được gán nên nó báo lỗi. (*p)++ thì là tăng giá trị *p tức n lên 1 thì in ra =6
Cái này bạn hỏi hay sao
bạn search độ ưu tiên phép toán trong c/c++ rồi có kết quả!
Mình làm y như bạn:
Giải thích: p chứa địa chỉ của n => số thứ tự Byte mà n được lưu, ví dụ:
n là biến nguyên (int) nên chiếm 4 Byte nên thứ tự là từ 0 đến 3 hoặc từ 1 - 4 ,hoặc … mỗi lần chạy máy sẽ hiển thị khác nhau.
p++ cũng là con trỏ nhưng số thứ tự được lưu sẽ là vị trí Byte đầu tiên của n + thêm 4.
*p là nội dung của p tức là n hay nói cách khác, sau các khai báo của bạn thì không có sự khác nhau giữa *p và n nghĩa là dùng thế nào cũng được.
Cứ nhớ strcpy người ta viết ntn:
while(*dest++ = *source++);
tức là ++ trước rồi mới tới *. Sau mỗi lần chạy
dest
vàsource
trỏ tới ô tiếp theo.Con trỏ luôn là chẵn byte nhé trừ phi bạn ép kiểu con trỏ thôi.
*p++ tức là con trỏ p chỉ vào ô nhớ tiep theo, mà ô nhớ tiếp theo chưa được gán giá trị nên bạn cout<<*p tức là in ra giá trị. giá trị chưa được gán nên nó báo lỗi. (*p)++ thì là tăng giá trị *p tức n lên 1 thì in ra =6
*p++ thì toán tử ++ tác dụng lên p còn (*p)++ thì toán tử ++ tác dụng lên (*p) . p và (*p) là 2 biến khác nhau