Anda di halaman 1dari 9

Modul V Pointer

MODUL V
POINTER
A. Tujuan
1. Mahasiswa dapat memahami definisi dan kegunaan pointer.
2. Mahasiswa dapat mengatahui bagaimana mengimplementasikan pointer
dalam program.

B. Dasar Teori
B.1 Pengertian Pointer
Pointer adalah sebuah variabel yang berisikan alamat memori (bukan nilai)
atau dengan kata lain dapat dikatakan bahwa pointer adalah suatu variabel penunjuk
ke alamat memori tertentu. Cara pendeklarasian pointer dalam bahasa C++ adalah
dengan menambakan tanda asterisk (*) di depan nama pointer, seperti berikut:
Tipe_data *nama_pointer; atau
Tipe_data* nama_pointer;
Tipe_data dapat berupa sembarang tipe seperti halnya pendefinisian
variable. Nama_pointer adalah nama variabel pointer yang akan digunakan.
Dereference (*) adalah operator memori untuk mengembalikan nilai variabel pada
alamatnya yang ditentukan oleh operand (Frieyadie, 2017).
Contoh:
int *pint; atau
int* pint;
char *pchr; atau
char* pchr;
Pointer adalah pada dasarnya sama dengan variabel lain. Dengan pointer
setiap variable diletakkan pada alamat memori yang besarnya cukup untuk
menampung nilai dari sebuah variable tipe data. Pada sebuah komputer PC misalnya
satu byte data secara umum dialokasikan untuk tipe data char, 2 byte untuk tipe data
short, 4 byte untuk tipe data int, long dan float serta 8 byte untuk tipe data double.
Tiap-tiap byte data memori mempunyai alamat yang unik. Sebuah variable alamat
merupakan alamat di mana sebuah byte data pertama dapat dialokasikan. Sebagai
contoh misalnya dapat didefinisikan dalam program sebagai berikut :
char huruf;
short angka;
float amount;

Praktikum Dasar Pemrograman (2024) Modul V - 1


Modul V Pointer
B.2 Perbedaan variabel dan pointer.
Pointer dapat didefinisikan sebagai suatu variabel yang menyimpan alamat
memori. Beda dengan variabel biasa yang menyimpan sebuah nilai, pointer ini
berisikan alamat saja. Jika kita mempunyai sebuah variabel dengan tipe data tertentu,
maka untuk mendapatkan alamat dari variabel tersebut adalah dengan menggunakan
operator diference (&). Alamat inilah yang kemudian akan disimpan ke dalam
variabel yang bertipe pointer. Jika suatu variabel sudah ditunjuk oleh pointer,
variabel yang ditunjuk oleh pointer tersebut dapat diakses melalui variabel itu sendiri
(pengaksesan langsung) ataupun melalui pointer (pengaksesan tak langsung).
Pengaksesan tak langsung dilakukan dengan menggunakan operator indirection (tak
langsung) berupa simbol asterisk (*) (bersifat unary) (Frieyadie. 2017).
Tabel 5.1 Perbedaan Variabel Biasa dengan Pointer
Variabel Biasa Pointer
Berisi alamat memory dari suatu
Berisi data/nilai
variable tertentu.
Membutuhkan operator khusus :
diference “&” yang menunjuk alamat
dari suatu variable tertentu.
Operator diference “&” hanya dapat
dilakukan kepada variable dan akan
Operasi yang bisa dilakukan seperti menghasilkan alamat dari variable itu.
layaknya operasi biasa : + , - , * , / Contoh : p=&n;
Yang kedua : operator dereference “*”.
Operator ini bersifat menggunakan
nilai dari alamat variable yang
ditunjuk oleh pointer tersebut.
Contoh : int *p;
Bersifat statis Bersifat dinamis
Deklarasi : int a; Deklarasi : int *a;

B.3 Bentuk umum pointer dalam Bahasa C++


Seperti halnya variabel lain, variabel pointer juga harus dideklarasikan
terlebih dahulu sebelum digunakan. Bentuk umum deklarasi pointer adalah :
Praktikum Dasar Pemrograman (2024) Modul V - 2
Modul V Pointer
Tipe_data *nama_pointer;

Di mana Tipe_data merupakan tipe dari data yang ditunjuk, bukan tipe dari
pointer-nya.
Contoh :
1. Mensubstitusikan address sebuah variabel ke pointer dengan memakai
address operator diference (&)
int x;
int *ptr;
ptr = &x;
2. Mensubstitusikan address awal sebuah array ke pointer char
char *ptr;
ptr = t;

3. Mensubstitusikan address salah satu elemen array dengan address operator


char
char *ptr; ptr = &t[3];
4. Mensubstitusikan address awal character string ke pointer char
char *ptr; ptr = "Jakarta";
5. Mensubstitusikan NULL pada pointer. NULL pada pointer kosong,
menunjukkan suatu status di mana pointer itu belum diinisialisasikan dengan
sebuah address tertentu.
6. Memakai fungsi MALLOC.
B.4 Operator yang digunakan pada pointer
B.4.1. Operator Diference (&)
Operator diference (&) yaitu mendeklarasikan suatu variabel di dalam
penggantian memori. Operator ini biasa disebut dengan “address of” (Khorib, 2019).
Sebagai contoh, misalkan deklarasi sebagai berikut:
int x = 8;
int *xPtr;
Contoh:
#include <iostream>
using namespace std;
int main(){
int x=8, y;
int *xPtr;
xPtr = &x;
y = *xPtr;
cout<<"Nilai x = "<<x<<endl;
cout<<"Alamat x = "<<&x<<endl;
cout<<"Alamat x = "<<xPtr<<endl;
cout<<"Nilai yang disimpan pada alamat ";
cout<<xPtr<<" adalah "<<y;}

Praktikum Dasar Pemrograman (2024) Modul V - 3


Modul V Pointer
Hasil Running :

B.4.2. Operator Dereference (*)


Operator dereference (*) yaitu dapat mengakses secara langsung nilai yang
terdapat di dalam variabel yang ber-pointer, hal ini dapat dilakukan dengan
menambahkan identifier asterisk (*). Operator ini biasa disebut dengan “value
pointed by” (Khorib, 2019).
Sebagai contoh, misalkan deklarasi sebagai berikut:
int x = 8, y;
int *xPtr;
Contoh:
#include <iostream>
using namespace std;
int main(){
int x=8, y;
int *xPtr;
xPtr = &x;
y = *xPtr;
cout<<"Nilai x = "<<x<<endl;
cout<<"Alamat x = "<<&x<<endl;
cout<<"Alamat x = "<<xPtr<<endl;
cout<<"Nilai yang disimpan pada alamat ";
cout<<xPtr<<" adalah "<<y;}

B.5 Pemanfaatan pointer


B.5.1. Pointer Void
Pointer void adalah pointer yang dapat menunjuk ke sembarang tipe data.
Jadi satu pointer dapat menunjuk ke tipe data integer, tipe data float, dan lain
sebagainya (Pambudi, 2018). Berikut ini contoh dari pointer void:
#include <iostream>
#include <conio.h>
int main(){
void *ptr; // pointer tak bertipe
int vint = 50;
float vfl= 51.5
otr= &vint; //menunjuk ke int
cout<<”nilai yang ditunjuk oleh
ptr:”<<*(int*)ptr<<endl;
ptr=&vfl; //menunjuk ke float
cout<<”nilai yang ditujuk oleh

Praktikum Dasar Pemrograman (2024) Modul V - 4


Modul V Pointer
ptr:”<<*(float*ptr<<endl;
}

B.5.2. Pointer dan Array


Pointer dan array merupakan hal yang hampir sama, karena sama-sama
menunjuk pada suatu alamat. Karena hal tersebut pada pointer yang menunjuk ke
array tidak menggunakan tambahan operator diference (&) di depan nama variabel
array (Sianipar. R.H. 2019).
#include <iostream>
using namespace std;
int main()
{
int angka[]={3,5};//array angka
int *pang;//pointer pang
pang = angka;//pointer menunjuk ke array
for(int i=0;i<2;i++){
cout<<*(angka +1)<<endl;}
}

B.5.3. Pointer dan String


Pointer juga dapat menunjuk ke sebuah string. Contoh hubungan antara
pointer dengan string, adalah:
#include<iostream>
#include<conio.h>
int main(){
char *pstring=”pendtium 2016”;
cout<<pstring;}

B.5.4. Pointer dalam Pointer


Dalam bahasa pemrograman C++ juga memperbolehkan penggunaan pointer
di dalam pointer yang masing-masing berisi data yang sama atau berbeda. Hal
tersebut ditandai dengan adanya dua tanda asterisk (*) sebelum nama variabel
pointer (Sianipar. R.H. 2019).
Berikut contohnya:
#include <iostream>
#include <conio.h>

int main()
{
float a=0.5;
float *ptrsatu,**ptrdua;
Ptrsatu=&a;
Ptrdua =&ptrsatu;
cout<<”nilai ptrsatu=”<<*ptrsatu<<endl;
cout<<”nilai ptrdua =”<<**ptrdua<<endl;
}

Praktikum Dasar Pemrograman (2024) Modul V - 5


Modul V Pointer
C. Studi Kasus
Buatlah program untuk menghitung 2 bangun ruang dan 1 bangun datar
dengan pointer disertai penggunaan fungsi dan array.

Praktikum Dasar Pemrograman (2024) Modul V - 6


Modul V Pointer
C.1.1 Flowchart

Praktikum Dasar Pemrograman (2024) Modul V - 7


Modul V Pointer
C.1.2 Script

#include <iostream>
#include <array>
# define pi 3.14159265358979323846
using namespace std;

double sisiKubus, jariBola, sisiPersegi;


double lp(double sisi) {return sisi*sisi;} //Luas persegi
double vk(double sisi) {return sisi*sisi*sisi;} //Volume
Kubus
double vb(double jari) {return (4.0/3.0)*pi*jari*jari*jari;}
//Volume Bola

int main(){
array<double, 3> nilai;
double* ptrNilai = nilai.data();
cout << "Masukkan nilai sisi kubus untuk menghitung
Luas persegi : ";
cin >> *(ptrNilai);
cout << "\nMasukkan nilai jari-jari bola untuk
menghitung Volume Bola : ";
cin >> *(ptrNilai+1);
cout << "\nMasukkan nilai sisi persegi untuk menghitung
Volume Kubus : ";
cin >> *(ptrNilai+2);
double luasPersegi = lp(*(ptrNilai+2));
double volumeBola = vb(*(ptrNilai+1));
double volumeKubus = vk(*(ptrNilai));
cout << "\n=================================\n";
cout << "Luas Persegi : " << luasPersegi << "\n";
cout << "Volume Bola : " << volumeBola << "\n";
cout << "Volume Kubus : " << volumeKubus << "\n";

return 0;
}

Praktikum Dasar Pemrograman (2024) Modul V - 8


Modul V Pointer
C.1.3 Hasil Running

Praktikum Dasar Pemrograman (2024) Modul V - 9

Anda mungkin juga menyukai