Minggu, 24 Februari 2019

Posted by Milda Hayati on 22.04 with No comments

Pengertian Pointer


Pointer merupakan suatu variabel. Pointer wajib memiliki suatu alamat memori sehingga alamat suatu variabel dapat diketahui dengan mudah. Dalam pemrograman yang besar, penghematan memori sangat perlu dilakukan. Apabila menggunakan konsep copy-paste dalam programan, maka akan sangat memboroskan penggunaan memori. Dalam ponter, kita dapat menunjuk suatu memori, mengubah nilai dan menyalin nilai memori secara tidak langsung(perantara variabel pointer).

Adapun fungsi dari pointer sendiri  yaitu:
1. Kegunaan utama adalah untuk meyimpan alamat memori dari sebuah variabel dan alamat.
2. Meningkatkan kinerja untuk operasi yang dilakukan secara berulang

Jadi, dalam mekanisme pointer, suatu vaiabel dalam suatu fungsi dapat diakses oleh fungsi yang lain.
Sebelum kita membahas bagaimana pendeklarasian dan pengaksesan pointer. Ada beberapa hal yang harus diketahui yaitu Addewss-of(&) dan Dereference operator(*).

Operator Pointer


1. Address-of Operator(&) adalah operator yang digunakan untuk mendapatkan atau melihat alamat memori yang dimiliki oleh variabel tersebut. Cara menggunakannya adalah dengan meletakkan tanda '&' pada depan identitas saat pemanggilan variabel. Lokasi variabel akan ditentukan otomatis oleh kompiler dan operating system pada saat run-time.

#include <iostream>
using namespace std;
int main(){
int a = 5;
cout<<"Alamat Variabel a adalah :"<<&a<<endl;
cout<<"Nilai Variabel a adalah :"<<a<<endl;
return 0;
}
Hasil output programnya adalah:














deference


2.  Dereference Operator(*) adalah operator yang digunakan untuk mengakses nilai yang tersimpan secara langsung dengan memberikan awalan arterisk '*' pada identifier pointer. Sama dengan simbol Address-of Operator, peletakkan simbolnya diletakkan diawal variabel.

1
2
3
4
5
6
7
8
9
10
11
12
13
14
#include <iostream>
using namespace std;
int main(){
int a=5; //Memberikan nilai 5 pada variabel a
int *b; //Mendeklarasikan variabel b sebagai pointer
b = &a; //Mengkopikan alamat variabel a kedalam variabel pointer b
cout<<"Nilai variabel a adalah "<<a<<endl;
cout<<"Alamat variabel a adalah "<<&a<<endl;
cout<<"Isi dari variabel b adalah "<<b<<endl;
cout<<"Nilai yang tertampung dalam variabel b adalah "<<*b<<endl;
return 0;
}
Hasil output programnya adalah:
reference





Pendeklarasian Pointer

Bentuk penulisan pointer yaitu:
tipeData *identitas;
//atau
tipeData *identitas = &var;
  

Contoh penulisan sebagai berikut:
int *pInt;
double *pDouble = &myVar;

Untuk mendeklarasikan sebuah variabel pointer, maka tambahkan dereference operator sebelum identitas. Pointer tidak hanya berlaku pada variabel, dapat juga digunakan pada function, objek dan lain-lain.


Mengakses Pointer

Dalam pengaksesan pointer, kita dapat mengakses nilai dari pointer dan mengakses nilai dari alamat memori yang dimiliki oleh pointer. Untuk pengksesan pointer tidak jauh berbeda dengan cara mengakses variabel. Pengaksesan pointer yaitu dengan cara seperti dibawah ini.

pInt

Karena pointer memiliki nilai berupa alamat memori, untuk mengubah nilai dari pointer atau mengubah tujuan dari pointer membutuhkan opertor addres-of(&) pada operand sumber.

pInt = &myVar

Operand sumber akan menghasilkan alamat memori dari myVar, dan hal itu merupakan nilai yang dibutuhkan oleh variabel pointer.

Contoh program:
#include <iostream>
using namespace std;

int main()
{
    int var1 = 2, var2 = 5;
    int *pVar = &var1;

    cout<<"var1 = "<<&var1<<endl;
    cout<<"pVar = "<<pVar<<endl;
    cout<<"====="<<endl<<endl;
    pVar=&var2;
    cout<<"var2 = "<<&var2<<endl;
    cout<<"pVar = "<<pVar<<endl;

    return 0;
}


Ukuran Pointer

Besar memori dari pointer tergantung pada mesin kompiler. jika kompiler merupakan 32bit maka pointer akan memakan memori sebanyak 4 bytes, Jika menggunakan 64bit maka pointer memakan memori sebanyak 8 bytes.
#include <iostream>
using namespace std;

int main()
{
    int var = 2;
    int *pVar = &var;

    cout<<sizeof(pVar)<<endl;

    return 0;
}

Pointer dan Array

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:
1
2
3
int *pointerArray;
int nilaiArray[5];
pointerArray = nilaiArray; //memberikan alamat elemen pertama array pada variabel pointer
Dari sintaks di atas, variabel pointer dengan nama pointer array sekarang menunjuk pada alamat memori elemen pertama array dengan nama nilai array. Nah secara tidak langsung kita dapat mengakses nilai elemen array dengan menggunakan variabel pointer. Berikut contoh sintaks pemrogramannya:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
#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:
array dan pointer2

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  contoh 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:
pointer_parameter
Pada program diatas, adalah membuat fungsi tambah, dimana ketika alamat 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.



Referensi:
http://laraswahyu.blogspot.com/2017/05/pointer-dalam-bahasa-c-pengertian.html
https://www.sinauarduino.com/artikel/pointer-pada-pemrograman-cpp/
https://www.belajarcpp.com/tutorial/cpp/pointer/

0 komentar:

Posting Komentar

Popular Posts

Recent Posts

Pages

Text Widget

Diberdayakan oleh Blogger.

About Me

Milda Hayati
Lihat profil lengkapku

Featured Post

Konfigurasi IP Table/ Firewell

Followers

Author Details

Hey there, We are Blossom Themes! We are trying to provide you the new way to look and use the blogger templates. Our designers are working hard and pushing the boundaries of possibilities to widen the horizon of the regular templates and provide high quality blogger templates to all hardworking bloggers!

Blogger templates

3/recentposts

Blogroll

Pages

Blogger templates

Blogroll

Blogroll

Popular Posts

Popular Posts

Copyright © MILDA HAYATI | Powered By Blogger | Published By Gooyaabi Templates
Design by Carolina Nymark | Blogger Theme by NewBloggerThemes.com