Materi Pointer C++
PENGERTIAN POINTER DAN CONTOH PROGRAM BESERTA PENJELASANNYA
Pengertian Pointer pada C++
Pointer adalah penunjuk suatu variabel. Karena menunjuk suatu variabel, maka pointer wajib memiliki alamat dari variabel yang ditunjuknya. Kadangkala dalam program yang besar, penghematan memori wajib untuk dilakukan. Dengan mekanisme copy dan paste nilai variabel satu kedalam variabel lain, akan sangat memboroskan memori. Dengan mekanisme pointer, suatu variabel dalam suatu fungsi dapat diakses oleh fungsi yang lain.
Intinya :
- Pointer adalah suatu variabel yang menunjuk ke alamat memory variabel yang lainnya.
- Variabel pointer berisi suatu alamat (alokasi memory).
1. Fungsi Pointer
Kegunaan pointer yang utama adalah untuk menyimpan alamat memori dari sebuah variabel dan alamat
dari sebuah fungsi. Pointer dapat meningkatkan kinerja untuk operasi yang dilakukan secara berulang.
2. Macam Operator Pointer
A. Operator Dereference (&)
Operator Dereference (&) yaitu operator yang berfungsi mendeklarasikan sebuah variabel didalam penggantian memori. operator ini biasa disebut dengan "address of". Jadi seandainya sobat ingin mengetahui dimana variabel akan disimpan (untuk mengetahui letak / alamat penyimpanan variabel di memori), sobat dapat memberikan tanda "&" (ampersand sign) didepan variabel, yang berarti "address of". Karena dengan menggunakan operator dereference (&) ini, sebuah variabel akan menghasilkan alamat lokasi penyimpanannya di memori. Sebagai contoh "int angka" ditempatkan pada memori dengan alamat 0x6ffe34 untuk mengetahuinya sobat dapat menuliskan code seperti ini cout<<"\nAlamat variabel angka (&angka) : "<<&angka;
berikut code lengkapnya :
#include <iostream>
using namespace std;
int main(){
//deklarasi variabel angka dengan tipe data int
int angka = 90;
//deklarasi pointer angkax dengan tipe data int
int *angkax;
//angkax sama dengan Address Of angka (0x6ffe34)
//sekarang pointer angkax menunjuk ke alamat memori variabel angka
//atau pointer angkax berisi (menunjuk) alamat memori variabel angka
angkax = &angka;
cout<<"Nilai (isi) dari variabel angka : "<<angka;
cout<<"\nAlamat variabel angka (&angka) : "<<&angka;
cout<<"\nNilai yang ditunjuk pointer *angkax : "<<*angkax;
return 0;
}
Hasil running
Bagan 1 Contoh Penggunaan Operator Dereference (&)
Dari program (code) contoh penggunaan Operator Dereference (&) diatas, kami mencoba membuat ilustrasinya pada gambar dibawah ini sehingga sobat dapat lebih memahami code yang kami buat, perlu diketahui alamat memori dari sebuah variabel / pointer pada setiap komputer kemungkinan besar berbeda.
Bagan 2 Ilustrasi Pointer pada C++, pada program Contoh Penggunaan Operator Dereference (&)
Pada program diatas awalnya kita membuat variabel dengan tipe data int dengan nama "angka", disaat yang bersamaan kita juga melakukan inisialisasi "int angka" dengan nilai awal "90", kemudian kita melakukan deklarasi sebuah pointer dengan tipe data int dan dengan nama "angkax", Setelah itu kita menuliskan code "angkax = &angka;" yang artinya memerintahkan pointer angkax menunjuk ke alamat memori variabel angka, sehingga nilai yang ditunjuk pointer angkax sama dengan nilai dari variabel angka (90) karena pointer angkax telah menunjuk ke alamat memori variabel angka (lihat kembali code diatas).
Operator Reference (*)
Seandainya pada operator Dereference (&) sobat dapat mengeluarkan alamat memory dari sebuah variabel, sedangkan pada Operator Reference (*) sobat dapat mengeluarkan (menampilkan) nilai dari alamat memori yang di tunjuk. untuk penggunaan nya sendiri sobat dapat menambahkan identifier asterisk (*) didepan variabel. biasanya Operator reference disebut dengan "value pointed by"
Dari contoh program diatas, nilai *angkax adalah "90", hal tersebut karena pointer angkax menjunjuk ke variabel angka sehingga apabila kita menuliskan code cout<<"\nNilai yang ditunjuk pointer *angkax : "<<*angkax; maka akan keluar angka 90 karena kita mengeluarkan nilai dari alamat memori yang ditunjuk oleh pointer angkax (nilai / value yang berada di alamat memori 0x6ffe34).
untuk lebih memahami materi Pointer pada C++ ini, khususnya dalam penggunaan Operator Dereference (&) dan Operator Reference (*), kita akan membahas satu lagi contoh program pointer lengkap dengan penjelasannya.
untuk lebih memahami materi Pointer pada C++ ini, khususnya dalam penggunaan Operator Dereference (&) dan Operator Reference (*), kita akan membahas satu lagi contoh program pointer lengkap dengan penjelasannya.
#include <iostream>
using namespace std;
int main(){
//deklarasi variabel x dengan tipe data int
int x;
//deklarasi pointer p dengan tipe data int
int *p;
x = 20;
p = &x;
cout<<"\t\t===== Program Contoh Pointer =====\n\n";
cout<<"Nilai X \t\t: "<<x<<endl;
cout<<"Alamat X (&X) \t\t: "<<&x<<endl<<endl;
cout<<"Nilai yang ditunjuk *P\t: "<<*p<<endl;
cout<<"Alamat yang ditunjuk *P\t: "<<p<<endl;
cout<<"Alamat *P (&P) \t\t: "<<&p<<endl;
// mengisi nilai 30 kedalam *p / alaman yang ditunjuk pointer p
// untuk megisikan nilai melalui alamat pointer gunakan *
// karena alamat memori yang ditunjuk pointer p merupakan alamat memori variabel x
// maka nilai dari variabel x juga ikut berubah
*p = 30;
cout<<"\n\n\nNilai X \t\t: "<<x<<endl;
cout<<"Alamat X (&X) \t\t: "<<&x<<endl<<endl;
cout<<"Nilai yang ditunjuk *P\t: "<<*p<<endl;
cout<<"Alamat yang ditunjuk *P\t: "<<p<<endl;
cout<<"Alamat *P (&P) \t\t: "<<&p<<endl;
return 0;
}
Hasil running
Dari program (code) Contoh Pointer dalam C++ diatas, kami mencoba membuat ilustrasinya pada gambar dibawah ini sehingga sobat dapat lebih memahami code yang kami buat, perlu diketahui alamat memori dari sebuah variabel / pointer pada setiap komputer kemungkinan besar berbeda.
Pada program diatas awalnya kita membuat variabel dengan tipe data int dengan nama "x", kemudian sebuah pointer dengan tipe data int dengan nama "p". setelah itu memberikan nilai x dengan nilai "20" kemudian mengarahkan / mengisi / menunjukkan pointer p ke alamat memori variabel x. setelah itu menampilkan data dari variabel x dan pointer p, Kemudian code *p = 30; memiliki arti bahwa kita akan mengisi nilai 30 kedalam pointer p / alaman yang ditunjuk pointer p, karena alamat memori yang ditunjuk ponter p merupakan alamat memori variabel x maka nilai dari variabel x juga ikut berubah, Untuk membuktikan nilai variabel x juga ikut berubah (menjadi 30) maka pada code dibawah nya kita akan menampilkan data dari variabel x dan pointer p.
Pointer dan Array
Tahukah kamu bahwa jika kamu menuliskan sebuah array tanpa tanda kurung kotak ([]) maupun indeksnya, maka array tersebut menunjuk atau bersi alamat elem pertama dari array tersebut. Misalkan kamu membuat sebuah pointer bertipe int dengan nama pointerArray dan sebuah array dengan tipe yang sama yaitu int dengan nama nilaiArray, maka pemberian nilai berikut sah dan dapat dilakukan:
int
*pointerArray;
int
nilaiArray[5];
pointerArray = nilaiArray; //memberikan alamat elemen pertama array pada variabel pointer
Dari sintaks di atas, variabel pointer dengan nama pointrArray sekarang menunjuk pada alamat memori elemen pertama array dengan nama nilaiArray. Nah secara tidak langsung kita dapat mengakses nilai elemen array dengan menggunakan variabel pointer. Berikut Mimin contohkan sintaks pemrogramannya:
#include <iostream>
using
namespace
std;
int
main(){
int
nilaiArray[5] = {2,5,4,6,7};
int
*pointerArray;
pointerArray = nilaiArray;
cout<<"Nilai pada elemen 0 nilaiArray adalah = "<<nilaiArray[0]<<endl;
cout<<"Nilai pada elemen 0 nilaiArray (Pointer) adalah = "<<*pointerArray<<endl;
pointerArray++; // naikan alamat yang ditunjuk pointer sejauh 1 integer
*pointerArray = 10; //Ubah nilai elemen 1 array (nilaiArray) menjadi 10
cout<<"Nilai pada elemen 1 nilaiArray adalah = "<<nilaiArray[1]<<endl;
cout<<"Nilai pada elemen 1 nilaiArray (Pointer) adalah = "<<*pointerArray<<endl;
pointerArray = nilaiArray; //kembalikan pointer pada elemen pertama
cout<<endl;
cout<<"Akses nilai semua array dengan pointer dan looping for"<<endl;
for
(int
i=0; i<5; i++){
cout<<"Nilai indeks ["<<i<<"] adalah = "<<*(pointerArray+i)<<endl;
}
return
0;
}
Hasil output programnya adalah sebagai berikut:
Dari hasil di atas, dapat kamu lihat bagaimana cara mengakses nilai array dengan menggunakan pointer.
Suatu pointer bertipe int hanya dapat digunakan untuk menunjuk pada variabel int. Sebab, tipe data tersebut akan menentukan sifat pointer ketika alamat pointer tersebut dilakukan increment. Begitu juga untuk tipe data yang lain.
Pointer Sebagai Parameter Suatu Fungsi
Seperti halnya dengan array, pointer dapat digunakan sebagai parameter suatu fungsi. Karena sifat pointer yang hanya sebagai penunjuk, maka setiap perubahan yang terjadi pada parameter, sebenarnya terjadi pada variabel yang ditunjuk bukan pada variabel pointer. Berikut Mimin contohkan program sederhananya:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
| #include <iostream> using namespace std; void tambah(int *angka){ *angka +=20; } int main(){ int nilai = 10; cout<<"Nilai variabel nilai adalah = "<<nilai<<endl; tambah(&nilai); //Memasukkan alamat variabel nilai pada fungsi tambah cout<<"Nilai variabel nilai adalah = "<<nilai<<endl; return 0; } |
Berikut adalah output programnya:
Pada program diatas, Mimin membuat fungsi tambah, dimana ketika alama suatu variabel diberikan sebagai parameter fungsi, nilai 20 akan ditambahkan pada alamat tersebut. Perbedaan parameter berupa pointer dan non-pointer adalah, pada variabel non-pointer, ketika kamu ingin memasukkan nilai pada sebuah variabel kedalam parameter, kamu harus memasukkan nilai dari variabel tersebut. Untuk parameter berupa pointer, kamu cukup memasukkan alamat variabel yang menampung nilai dengan operator (&) kedalam parameter fungsi
Yang menarik adalah pada fungsi tambah di atas, walaupun fungsi tersebut merupakan fungsi void tanpa nilai kembalian alias return, namun nilai variabel parameter berubah.
http://www.materidosen.com/2016/11/pointer-pada-c-lengkap-contoh-program.html
https://www.sinauarduino.com/artikel/pointer-pada-pemrograman-cpp/
https://www.proweb.co.id/articles/mobile_development/pointer_cplusplus.html
Komentar
Posting Komentar