Memahami ketiga-tiga ungkapan penunjuk ini boleh membingungkan. Panduan terperinci ini akan memecahkan setiap operasi ungkapan dan memberikan contoh untuk aplikasi praktikalnya dalam kod.
Ungkapan ini menyahrujuk penuding dan kemudian menambah penuding alamat.
Contoh:
char *p = "Hello"; while (*p++) { printf("%c", *p); }
Kod ini mencetak "ello" dan bukannya "Hello" kerana penunjuk sedang dinaikkan selepas mengakses aksara, melangkau watak 'H'.
Ungkapan ini menaikkan alamat penuding dan kemudian menafikan penunjuk.
Contoh:
char *p = "Hello"; printf("%c", *++p);
Kod ini mencetak "e" sebagai aksara selepas nilai penunjuk awal (yang menghala ke 'H') diakses sebelum dinaikkan ke arah 'e'.
Ungkapan ini menyahrujuk penuding dan kemudian menambah nilai pada alamat.
Contoh:
char q[] = "Hello"; char *p = q; printf("%c", ++*p);
Kod ini mencetak "I" kerana nilai di alamat adalah terus bertambah kepada 'I'.
Ungkapan ini berbeza sedikit dan memaksa penolakan rujukan sebelum menambah nilai.
Contoh:
char q[] = "Hello"; char *p = q; printf("%c", (*p)++);
Kod ini mencetak "H" dan kemudian membuat sasaran kenaikan seterusnya 'I'.
Ekspresi penuding ini menawarkan fleksibiliti dalam manipulasi penuding. Walau bagaimanapun, adalah penting untuk mengetahui selok-beloknya, termasuk susunan keutamaan, penilaian nilai dan kesan sampingan. Dengan memahami operasi ini secara terperinci, anda boleh menggunakannya dengan berkesan dalam kod anda dan mengelakkan kemungkinan perangkap.
Atas ialah kandungan terperinci Apakah Perbezaan Antara `ptr `, ` ptr` dan ` *ptr` dalam C/C ?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!