Bahasa C
Dalam tutorial ini, kita akan belajar tentang pointer di C++ dan cara kerjanya dengan bantuan contoh.
Dalam C++, pointer adalah variabel yang menyimpan alamat memori dari variabel lain.
Jika kita memiliki variabel var dalam program kami, &var akan memberi kita alamatnya di memori. Misalnya,
#include <iostream>
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
Address of var1: 0x7fff5fbff8ac Address of var2: 0x7fff5fbff8a8 Address of var3: 0x7fff5fbff8a4
Di sini, 0x
di awal mewakili alamat dalam bentuk heksadesimal.
Perhatikan bahwa alamat pertama berbeda dari yang kedua sebesar 4 byte dan alamat kedua berbeda dari yang ketiga sebesar 4 byte.
Ini karena ukuran int
variabel adalah 4 byte dalam sistem 64-bit.
Catatan: Anda mungkin tidak mendapatkan hasil yang sama saat menjalankan program.
Seperti disebutkan di atas, pointer digunakan untuk menyimpan alamat daripada nilai.
Inilah cara kita mendeklarasikan pointer.
int *pointVar;
Di sini, kita telah mendeklarasikan sebuah pointer pointVar dari int
ketik.
Kita juga dapat mendeklarasikan pointer dengan cara berikut.
int* pointVar; // preferred syntax
Mari kita ambil contoh lain untuk mendeklarasikan pointer.
int* pointVar, p;
Di sini, kita telah mendeklarasikan sebuah pointer pointVar dan variabel normal p .
Catatan: *
operator digunakan setelah tipe data untuk mendeklarasikan pointer.
Berikut adalah bagaimana kita dapat menetapkan alamat ke pointer:
int* pointVar, var;
var = 5;
// assign address of var to pointVar pointer
pointVar = &var;
Di sini, 5
ditugaskan ke variabel var . Dan, alamat var ditugaskan ke pointVar pointer dengan kode pointVar = &var
.
Untuk mendapatkan nilai yang ditunjuk oleh pointer, kita menggunakan *
operator. Misalnya:
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 *pointVar
untuk mendapatkan nilai yang disimpan di alamat tersebut.
Ketika *
digunakan dengan pointer, ini disebut operator dereferensi . Ini beroperasi pada pointer dan memberikan nilai yang ditunjukkan oleh alamat yang disimpan dalam pointer. Yaitu, *pointVar = var
.
Catatan:Dalam C++, pointVar dan *pointVar benar-benar berbeda. Kami tidak dapat melakukan sesuatu seperti *pointVar = &var;
#include <iostream>
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 Address of var (&var) = 0x61ff08 pointVar = 0x61ff08 Content of the address pointed to by pointVar (*pointVar) = 5
Jika pointVar menunjuk ke alamat var , kita dapat mengubah nilai var dengan menggunakan *pointVar .
Misalnya,
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 &var
memiliki alamat yang sama, nilai var juga akan diubah ketika *pointVar diubah.
#include <iostream>
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 Changing value of var to 7: var = 7 *pointVar = 7 Changing value of *pointVar to 16: var = 16 *pointVar = 16
Misalkan, kita menginginkan pointer varPoint untuk menunjuk 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 Disarankan :
Bahasa C
Petunjuk C++ Dalam tutorial ini, kita akan belajar tentang pointer di C++ dan cara kerjanya dengan bantuan contoh. Dalam C++, pointer adalah variabel yang menyimpan alamat memori dari variabel lain. Alamat di C++ Jika kita memiliki variabel var dalam program kami, &var akan memberi kita alamatnya
Penunjuk dan Array C++ Dalam tutorial ini, kita akan belajar tentang hubungan antara array dan pointer dengan bantuan contoh. Dalam C++, Pointer adalah variabel yang menyimpan alamat dari variabel lain. Pointer tidak hanya dapat menyimpan alamat variabel tunggal, tetapi juga dapat menyimpan alamat
Panggilan C++ dengan Referensi:Menggunakan pointer [Dengan Contoh] Dalam tutorial ini, kita akan belajar tentang panggilan C++ dengan referensi untuk meneruskan pointer sebagai argumen ke fungsi dengan bantuan contoh. Dalam tutorial Fungsi C++, kita belajar tentang meneruskan argumen ke suatu fungs
Warisan C++ Dalam tutorial ini, kita akan belajar tentang pewarisan dalam C++ dengan bantuan contoh. Pewarisan adalah salah satu fitur utama pemrograman berorientasi objek di C++. Ini memungkinkan kita untuk membuat kelas baru (kelas turunan) dari kelas yang ada (kelas dasar). Kelas turunan mewari