ในส่วนนี้ เราจะดูความแตกต่างระหว่าง *ptr++, *++ptr และ ++*ptr ใน C++
ที่นี่เราจะดู precedence (ลำดับความสำคัญ) ของ postfix++ และ prefix++ ใน C หรือ C++ Precedence ของ prefix ++ หรือ -- มีความสำคัญสูงกว่า dereference operator '*' และ postfix ++ หรือ -- มีความสำคัญสูงกว่าทั้ง prefix ++ และ dereference operator '*'
เมื่อ ptr เป็น pointer แล้ว *ptr++ หมายถึง *(ptr++) และ ++*ptr หมายถึง ++(*ptr)
ตัวอย่างโค้ด
#include<iostream>
using namespace std;
int main() {
char arr[] = "Hello World";
char *ptr = arr;
++*ptr;
cout << *ptr;
return 0;
}
ผลลัพธ์
I
ที่นี่ ptr ชี้ไปที่ 'H' ก่อน หลังใช้ ++*ptr จะเพิ่มค่า H ขึ้น 1 ตอนนี้ค่าคือ 'I'
ตัวอย่างโค้ด
#include<iostream>
using namespace std;
int main() {
char arr[] = "Hello World";
char *ptr = arr;
*ptr++;
cout << *ptr;
return 0;
}
ผลลัพธ์
e
ที่นี่ ptr ชี้ไปที่ 'H' ก่อน หลังใช้ *ptr++ จะเพิ่ม pointer ไปยัง element ถัดไป ดังนั้นผลลัพธ์คือ 'e'
ตัวอย่างโค้ด
#include<iostream>
using namespace std;
int main() {
char arr[] = "Hello World";
char *ptr = arr;
*++ptr;
cout << *ptr;
return 0;
}
ผลลัพธ์
e
ในตัวอย่างนี้ เราเพิ่ม ptr ด้วย ++ ซึ่ง precedence ของ pre-increment ++ สูงกว่า จึงเพิ่ม pointer ก่อน แล้วค่อยดึงค่าด้วย * จึงพิมพ์ 'e'