Khi p là con trỏ, thứ tự ưu tiên: postfix ++ > prefix ++ > dereference *.
*p++≡*(p++): Lấy giá trị tạip, sau đó tăng con trỏp.*++p≡*(++p): Tăng con trỏptrước, rồi lấy giá trị tại vị trí mới.++*p≡++(*p): Tăng giá trị màptrỏ đến, con trỏ không đổi.
Ví dụ minh họa
#include <iostream>
using namespace std;
int main() {
char arr[] = "Hello World";
char *p = arr;
cout << "Ban dau: *p = " << *p << endl; // H
++*p; // Tăng giá trị 'H' -> 'I'
cout << "Sau ++*p: *p = " << *p << endl; // I
p = arr; // reset
*p++; // Lấy 'H', rồi p trỏ 'e'
cout << "Sau *p++: *p = " << *p << endl; // e
p = arr;
*++p; // Tăng p trỏ 'e', lấy 'e'
cout << "Sau *++p: *p = " << *p << endl; // e
return 0;
}
Kết quả
Ban dau: *p = H Sau ++*p: *p = I Sau *p++: *p = e Sau *++p: *p = e