Perbezaan: 1. Maksudnya berbeza "*p" mewakili kandungan yang disimpan dalam alamat memori yang ditunjuk oleh penunjuk ini oleh pembolehubah penunjuk ini. 2. Format keluaran adalah berbeza "*p" biasanya mengeluarkan pembolehubah atau pemalar jenis yang sama dengan penunjuk "p" mengeluarkan nombor perenambelasan dan alamat penunjuk. 3. Fungsi adalah berbeza "*p" memberitahu program untuk pergi ke alamat itu untuk mendapatkan data, dan "p" digunakan untuk menyimpan alamat.
Persekitaran pengendalian tutorial ini: sistem Windows 7, versi c99, komputer Dell G3.
*p
dan p
Dalam bahasa C, *p dan p biasanya digunakan dalam penunjuk untuk mewakili pembolehubah penunjuk.
Jika anda ingin menggunakan penunjuk, anda perlu memahami alamat dan data terlebih dahulu: anda boleh bayangkan terdapat banyak kotak, setiap kotak mempunyai nombor yang sepadan, nombor itu dipanggil "alamat", dan perkara-perkara dalam kotak itu dipanggil "data" .
p ialah pembolehubah penunjuk, digunakan untuk menyimpan alamat Anda boleh menganggapnya sebagai nombor kotak yang disebut di atas. Anda boleh menganggapnya sebagai membuka kotak. p bermakna membuka p kotak No dan keluarkan data di dalamnya.
Ringkasnya, anda ingat bahawa p menyimpan alamat, dan p memberitahu program untuk pergi ke alamat itu untuk mendapatkan semula data.
Tanda * mempunyai tiga kegunaan dalam bahasa C, iaitu:
Tanda darab, digunakan untuk operasi darab, seperti 5*6.
Mengisytiharkan penunjuk, digunakan semasa mentakrifkan pembolehubah penunjuk, seperti int *p;.
Pengendali tidak langsung, memperoleh nilai dalam memori yang ditunjuk oleh penuding, seperti printf("%d",*p);.
*p
dan p
dalam bahasa C1 🎜 >
mewakili kandungan yang disimpan dalam alamat memori yang ditunjuk oleh penuding ini. *p
mewakili nama pembolehubah penunjuk, yang merujuk kepada alamat memori yang ditunjuk oleh pembolehubah penunjuk. p
2. Format output adalah berbeza
Ia biasanya pembolehubah atau pemalar yang konsisten dengan jenis penunjuk. *p
Output ialah nombor perenambelasan dan alamat penuding. p
3. Fungsi yang berbeza
Biar program pergi ke alamat tersebut untuk mendapatkan semula data. *p
p menyimpan alamat.
#include <stdio.h> int main(void){ int x=3; int *p,*q; p=&x,q=&x; printf("%d\n",*p++); printf("%d\n",(*q)++); printf("%d\n",x); }
Penjelasan:
Meluaskan pengetahuan: Perbezaan antara
dan*p
**p
: Penunjuk tahap satu, menunjukkan bahawa alamat yang ditunjuk oleh p menyimpan nilai jenis int int *p
: Penunjuk tahap dua, menunjukkan bahawa alamat yang ditunjuk oleh p menyimpan nilai int . Penunjuk jenis int (iaitu, alamat yang ditunjukkan oleh p menyimpan penunjuk peringkat pertama ke int)
Contohnya: int **p
Kemudian cara untuk mendapatkan nilai 10 ialah:
int i=10; //定义了一个整型变量 int *p=&i; //定义了一个指针指向这个变量 int **p1=&p; //定义了一个二级指针指向p指针
printf("i=[%d]\n",*p); printf("i=[%d]\n",**p1);
Cadangan berkaitan: "Tutorial Video C
"Atas ialah kandungan terperinci Apakah perbezaan antara *p dan p dalam bahasa C. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!