Rumah >pembangunan bahagian belakang >C++ >Apakah Perbezaan Antara `*ptr `, `* ptr`, ` *ptr` dan `(*ptr) ` dalam C?

Apakah Perbezaan Antara `*ptr `, `* ptr`, ` *ptr` dan `(*ptr) ` dalam C?

Linda Hamilton
Linda Hamiltonasal
2024-12-11 03:03:12935semak imbas

What's the Difference Between `*ptr  `, `*  ptr`, `  *ptr`, and `(*ptr)  ` in C?

Ungkapan Penunjuk: Menavigasi ptr , ptr dan *ptr

Ungkapan penunjuk ini sering ditemui dalam pengaturcaraan C dan boleh menjadi sukar untuk difahami. Berikut ialah penjelasan terperinci:

1. *ptr

  • Keutamaan: * (arah) mempunyai keutamaan yang lebih tinggi daripada (kenaikan).
  • Nilai Ungkapan: Menilai kepada nilai yang ditunjukkan oleh ptr sebelum ini bertambah.
  • Kesan Sampingan: Kenaikan ptr oleh satu unit memori.

Contoh:

int a = 5;
int *ptr = &a;

*ptr++; // evaluates to 5, then increments ptr to point to the next integer

2. * ptr

  • Keutamaan: (kenaikan) dan * (indirection) mempunyai keutamaan yang sama.
  • Nilai Ungkapan: Menilai kepada nilai yang ditunjukkan oleh ptr selepas bertambah.
  • Kesan Sampingan: Kenaikan ptr oleh satu unit memori.

Contoh:

int a = 5;
int *ptr = &a;

*++ptr; // evaluates to 6 (a++) and increments ptr

3. *ptr

  • Kedahuluan: (kenaikan) dan * (indirection) mempunyai keutamaan yang sama.
  • Asosiativity: Kanan- ke kiri.
  • Ekspresi Nilai: Menambah nilai yang ditunjukkan oleh ptr.
  • Kesan Sampingan: Tiada.

Contoh:

int a = 5;
int *ptr = &a;

++*ptr; // increments a to 6

4. (*ptr)

  • Keutamaan: Tanda kurung mengatasi peraturan keutamaan.
  • Nilai Ungkapan: Menilai kepada nilai yang dinyahrujuk pada ptr sebelum menambah.
  • Sebelah Kesan: Menaikkan nilai yang dinyahrujuk.

Contoh:

int a = 5;
int *ptr = &a;

(*ptr)++; // evaluates to 5, then increments *ptr to 6

Perhatikan bahawa ptr , ptr dan ptr boleh ranap jika ptr ialah pengecam tatasusunan, manakala (ptr) boleh ranap jika ptr menunjuk kepada rentetan literal.

Atas ialah kandungan terperinci Apakah Perbezaan Antara `*ptr `, `* ptr`, ` *ptr` dan `(*ptr) ` dalam C?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn