Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> C++

ความแตกต่างระหว่าง ++*p, *p++ และ *++p ใน C++


ความแตกต่างระหว่าง *ptr++, *++ptr และ ++*ptr ใน C++

ในส่วนนี้เราจะดูความแตกต่างระหว่าง *ptr++, *++ptr และ ++*ptr ใน C++

ลำดับความสำคัญ (precedence) ของ postfix ++ และ prefix ++ ใน C/C++ คือ prefix ++ หรือ -- มีความสำคัญสูงกว่า dereference operator '*' และ postfix ++ หรือ -- มีความสำคัญสูงกว่าทั้ง prefix ++ และ dereference operator '*'

เมื่อ ptr เป็น pointer แล้ว *ptr++ หมายถึง *(ptr++) และ ++*ptr หมายถึง ++(*ptr)

ตัวอย่างโค้ด 1: ++*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'

ตัวอย่างโค้ด 2: *ptr++

#include <iostream>
using namespace std;

int main() {
    char arr[] = "Hello World";
    char *ptr = arr;
    *ptr++;
    cout << *ptr;
    return 0;
}

ผลลัพธ์

e

ptr ชี้ 'H' ก่อน หลัง *ptr++ pointer เพิ่มขึ้น ชี้ตัวถัดไปคือ 'e'

ตัวอย่างโค้ด 3: *++ptr

#include <iostream>
using namespace std;

int main() {
    char arr[] = "Hello World";
    char *ptr = arr;
    *++ptr;
    cout << *ptr;
    return 0;
}

ผลลัพธ์

e

ในตัวอย่างนี้ก็เพิ่ม ptr ด้วย ++ ก่อน (pre-increment มี precedence สูงกว่า) แล้วค่อย dereference ด้วย * จึงพิมพ์ 'e'