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

เปรียบเทียบ *ptr++, *++ptr และ ++*ptr ใน C++


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

ที่นี่เราจะเห็นลำดับความสำคัญของ postfix++ และ prefix++ ใน C หรือ C++ ลำดับความสำคัญของคำนำหน้า ++ หรือ -- มีลำดับความสำคัญสูงกว่าตัวดำเนินการ dereference '*' และ postfix ++ หรือ -- มีลำดับความสำคัญสูงกว่าทั้งคำนำหน้า ++ และตัวดำเนินการ dereference '*'

เมื่อ ptr เป็นตัวชี้ ดังนั้น *ptr++ จะระบุ *(ptr++) และ ++*prt อ้างอิง ++(*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++ จะเพิ่มตัวชี้ ดังนั้น ptr จะชี้ไปที่องค์ประกอบถัดไป ผลลัพธ์คือ 'e'

โค้ดตัวอย่าง

#include<iostream>
using namespace std;

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

ผลลัพธ์

e

ในตัวอย่างนี้ เรากำลังเพิ่ม ptr โดยใช้ ++ โดยที่ลำดับความสำคัญของการเพิ่มล่วงหน้า ++ จะสูงกว่า จากนั้นจะเพิ่มตัวชี้ก่อน จากนั้นจึงรับค่าโดยใช้ * มันเลยพิมพ์ 'e'