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
Lepaskan: 2024-12-11 03:03:12
asal
908 orang telah melayarinya

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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
Salin selepas log masuk

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!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan