C ++ Pointer

Dalam tutorial ini, kita akan belajar tentang pointer dalam C ++ dan cara kerjanya dengan bantuan contoh.

Di C ++, pointer adalah variabel yang menyimpan alamat memori variabel lain.

Alamat di C ++

Jika kita memiliki variabel var dalam program kita, & var akan memberi kita alamatnya di memori. Sebagai contoh,

Contoh 1: Mencetak Alamat Variabel di C ++

 #include using namespace std; int main() ( // declare variables int var1 = 3; int var2 = 24; int var3 = 17; // print address of var1 cout << "Address of var1: "<< &var1 << endl; // print address of var2 cout << "Address of var2: " << &var2 << endl; // print address of var3 cout << "Address of var3: " << &var3 << endl; )

Keluaran

 Alamat var1: 0x7fff5fbff8ac Alamat var2: 0x7fff5fbff8a8 Alamat var3: 0x7fff5fbff8a4

Di sini 0xdiwakili di awal alamat dalam bentuk heksadesimal.

Perhatikan bahwa alamat pertama berbeda dari yang kedua dengan 4 byte dan alamat kedua berbeda dari yang ketiga dengan 4 byte.

Ini karena ukuran intvariabel adalah 4 byte dalam sistem 64-bit.

Catatan: Anda mungkin tidak mendapatkan hasil yang sama saat menjalankan program.

C ++ Pointer

Seperti disebutkan di atas, pointer digunakan untuk menyimpan alamat daripada nilai.

Inilah cara kita mendeklarasikan pointer.

 int *pointVar;

Di sini, kami telah mendeklarasikan pointer pointVar dari inttipe tersebut.

Kami juga dapat mendeklarasikan pointer dengan cara berikut.

 int* pointVar; // preferred syntax

Mari kita ambil contoh lain untuk mendeklarasikan pointer.

 int* pointVar, p;

Di sini, kami telah mendeklarasikan pointer pointVar dan variabel normal p.
Catatan: The *operator yang digunakan setelah tipe data pointer declare.

Menetapkan Alamat ke Pointer

Berikut adalah cara kami menetapkan alamat ke pointer:

 int* pointVar, var; var = 5; // assign address of var to pointVar pointer pointVar = &var;

Di sini, 5diberikan ke variabel var. Dan, alamat var ditetapkan ke pointer pointVar dengan kode pointVar = &var.

Dapatkan Nilai dari Alamat Menggunakan Pointer

Untuk mendapatkan nilai yang ditunjukkan oleh pointer, kami menggunakan *operator. Sebagai contoh:

 int* pointVar, var; var = 5; // assign address of var to pointVar pointVar = &var; // access value pointed by pointVar cout << *pointVar << endl; // Output: 5

Dalam kode di atas, alamat var ditetapkan ke pointVar. Kami telah menggunakan *pointVaruntuk mendapatkan nilai yang disimpan di alamat itu.

Saat *digunakan dengan pointer, ini disebut operator dereferensi . Ini beroperasi pada penunjuk dan memberikan nilai yang ditunjukkan oleh alamat yang disimpan di penunjuk. Artinya *pointVar = var,.

Catatan: Di C ++, pointVar dan * pointVar sama sekali berbeda. Kami tidak bisa melakukan sesuatu seperti itu*pointVar = &var;

Contoh 2: Bekerja dengan C ++ Pointer

 #include using namespace std; int main() ( int var = 5; // declare pointer variable int* pointVar; // store address of var pointVar = &var; // print value of var cout << "var = " << var << endl; // print address of var cout << "Address of var (&var) = " << &var << endl << endl; // print pointer pointVar cout << "pointVar = " << pointVar << endl; // print the content of the address pointVar points to cout << "Content of the address pointed to by pointVar (*pointVar) = " << *pointVar << endl; return 0; )

Keluaran

 var = 5 Alamat dari var (& var) = 0x61ff08 pointVar = 0x61ff08 Isi alamat yang ditunjukkan oleh pointVar (* pointVar) = 5
Bekerja dari pointer C ++

Mengubah Nilai yang Ditunjuk oleh Pointer

Jika pointVar menunjuk ke alamat var, kita bisa mengubah nilai var dengan menggunakan * pointVar.

Sebagai contoh,

 int var = 5; int* pointVar; // assign address of var pointVar = &var; // change value at address pointVar *pointVar = 1; cout << var << endl; // Output: 1

Di sini, pointVar dan &varmemiliki alamat yang sama, nilai var juga akan berubah ketika * pointVar diubah.

Contoh 3: Mengubah Nilai yang Ditunjuk oleh Pointer

 #include using namespace std; int main() ( int var = 5; int* pointVar; // store address of var pointVar = &var; // print var cout << "var = " << var << endl; // print *pointVar cout << "*pointVar = " << *pointVar << endl << endl; cout << "Changing value of var to 7:" << endl; // change value of var to 7 var = 7; // print var cout << "var = " << var << endl; // print *pointVar cout << "*pointVar = " << *pointVar << endl << endl; cout << "Changing value of *pointVar to 16:" << endl; // change value of var to 16 *pointVar = 16; // print var cout << "var = " << var << endl; // print *pointVar cout << "*pointVar = " << *pointVar << endl; return 0; )

Keluaran

 var = 5 * pointVar = 5 Mengubah nilai var menjadi 7: var = 7 * pointVar = 7 Mengubah nilai * pointVar menjadi 16: var = 16 * pointVar = 16 

Kesalahan umum saat bekerja dengan pointer

Misalkan, kita ingin pointer varPoint mengarah ke alamat var. Kemudian,

 int var, *varPoint; // Wrong! // varPoint is an address but var is not varPoint = var; // Wrong! // &var is an address // *varPoint is the value stored in &var *varPoint = &var; // Correct! // varPoint is an address and so is &var varPoint = &var; // Correct! // both *varPoint and var are values *varPoint = var;

Bacaan yang Direkomendasikan :

  • Bagaimana cara menggunakan pointer tipe data generik menggunakan void pointer?
  • Bagaimana cara merepresentasikan array menggunakan pointer?
  • Bagaimana cara menggunakan pointer dengan fungsi?
  • Bagaimana cara menggunakan pointer dengan struktur?

Artikel yang menarik...