Anda di halaman 1dari 15

Praktikum Pemrograman

INSTITUT TEKNOLOGI PADANG STL1411


JOBSHEET VI
POINTER
6.1 Dasar Teori
Pointer adalah suatu variabel yang menunjuk ke alamat memory variabel
yang lainnya. Dengan menggunakan pointer banyak hal dapat dilakukan
seperti melewatkan suatu variabel yang ada di dalam fungsi yang telah di bahas
pada bab-bab sebelumnya. Suatu pointer bukan berisi dengan suatu nilai data
seperti halnya pada variabel biasa, variabel pointer berisi dengan suatu alamat.
Untuk mendeklarasikan variabel pointer kita menggunakan tanda asterik / bintang
(*) didepan variabel yang di deklarasikan pada tipe data tertentu. Tanda ini
juga dapat dipakai untuk mengakses nilai dari variabel yang telah ditunjuk.
Untuk mendapatkan alamat dari variabel pointer kita menggunakan tanda &.
Untuk lebih mengerti uraian diatas perhatikan ilustrasi berikut ini :
#include <iostream.h>
void main()
{
int *px, x, y;
// mendeklarasikan variabel pointer px bertipe integer
x = 1000;
//
memberikan nilai x sama dengan 1000
px = &x;
// dengan statement ini variabel pointer sekarang menunjuk
ke alamat variabel x
y = *px;
// mengakses variabel yang ditunjuk oleh pointer
cout << px;
// menampilkan isi dari variabel poi
nter px berupa alamat
cout << endl;
// ganti baris baru
cout << y;

TEKNIKNOLOGI REKAYASA INSTALASI ZULKIFLI ANDRIANTO


LISTRIK SARJANA TERAPAN 2022340008
Praktikum Pemrograman
INSTITUT TEKNOLOGI PADANG STL1411
// menampilkan isi dari variabel yang di tunjuk
}
Hasil dari program diatas adalah : FFDD 1000
Dari ilustrasi diatas dapat kita lihat bahwa px (yang merupakan
variabel pointer) berisi alamat dari variabel x. Sedangkan jika kita hendak
mengakses nilai dari variabel yang ditunjuk oleh variabel pointer (nilai dari
variabel x) maka kita gunakan tanda asterik di depan variabel pointer.
Satu hal lagi yang perlu diperhatikan lagi jika kita menggunakan
pointer ialah tipe variabel pointer dengan tipe data variabel yang ditunjuknya
haruslah sama contohnya pada program diatas variabel pointer px bertipe
sama dengan variabel yang ditunjuknya yaitu x, sama-sama bertipe integer.
1. Pointer dan Array
Hubungan antara pointer dan array pada C/C++ sangatlah erat, sebab
sesungguhnya array secara internal akan diterjemahkan dalam bentuk
pointer.
Untuk jelasnya perhatikan program berikut ini :
#include <iostream.h>
void main()
{
static int nilai[3] = {10,20,30 }; // pemberian nilai ke array nilai
int *pnilai; // mendeklarasikan variabel pointer pnilai
pnilai = nilai; // pnilai berisi alamat array
for(int i=0; i<3; i++)
{
cout << *(pnilai + i) << endl; // tampilkan isi array melalui variabel
}
pointer
}
Dari program diatas dapat dilihat bahwa pengaksesan elemen array
dapat dilakukan melalui alamat memori pada variabel pointer. *(pnilai + i) sama
hal nya dengan nilai[] pada array biasa. Output dari program diatas akan
menghasilkan nilai 10, 20 dan 30. untuk array dua, tiga dan n dimensi pun dapat

TEKNIKNOLOGI REKAYASA INSTALASI ZULKIFLI ANDRIANTO


LISTRIK SARJANA TERAPAN 2022340008
Praktikum Pemrograman
INSTITUT TEKNOLOGI PADANG STL1411
kita buat dengan menggunakan pointer. Contoh untuk array dengan dimensi
dua pendeklarasiannya adalah :
*(*(pnilai + i) + j)
2. Array dari pointer
Suatu array bisa digunakan untuk menyimpan sejumlah pointer.
Sebagai contoh untuk membuat array satu dimensi yang bertipe integer kita
seklarasikan :int nilai[3] dirubah menjadi int *nilaiterdapat perbedaan
diantara kedua statement diatas, pada array nilai[3] akan menyebabkan tiga
buah tempat untuk nilai-nilai integer atau sebanyak 6 byte memori akan
disiapkan untuk array ini (int = 2 byte dikali 3 tempat = 6 byte). Untuk
array pointer, kompiler tidak secara otomatis menyiapkan tempat untuk nilai-
nilainya, karena banyaknya nilai-nilai yang akan digunakan belum diketahui.
Untuk mengatasi masalah ini, maka untuk menyiapkan sejumlah blok
memori dapat digunakan cara alokasi dinamik (dynamic allocation). Cara
alokasi dinamik ini menggunakan memori yang masih kosong di luar
memori yang biasanya digunakan untuk data. Untuk menggunakan cara ini, perlu
digunakan fungsi khusus didalam pointer yaitu menggunakan fungsi standar
malloc()dengan prototypenya berada di header file stdlib.h. (ini hanya digunakan
jika kita menggunakan bahasa C), jika kita menggunakan bahasa C++ maka
fungsi standar yang digunakan ialah new. Contoh mengalokasikan suatu array
dengan menggunakan fungsi-fungsi diatas adalah sebagai berikut :
nilai = malloc(sizeof(int) * 3); // untuk mengalokasikan dengan C
nilai = new int // untuk mengalokasikan dengan C++
hasil dari pengalokasian diatas ialah suatu alamat yang menunjukkan byte pertama
dari memori yang dialokasikan di heap. Jika alokasi memori ini gagal, bisa
dikarenakan tidak mencukupinya memori pada heap, maka fungsi diatas
akan menghasilkan nilai NULL.
Setelah kita mengalokasikan memori untuk array, ada baiknya jika
kita menghapus / mende-alokasikan kembali array tersebut dari memori,
sehingga ruang di memori heap dapat digunakan untuk keperluan yang
lainnya. Untuk menghapus / mende-alokasikan sebuah array diperlukan
sebuah fungsi standar free()dari header file stdlib.h untuk para pengguna

TEKNIKNOLOGI REKAYASA INSTALASI ZULKIFLI ANDRIANTO


LISTRIK SARJANA TERAPAN 2022340008
Praktikum Pemrograman
INSTITUT TEKNOLOGI PADANG STL1411
bahasa C, jika kita menggunakan C++ kita menggunakan fungsi standar
delete. Contohnya :
free(nilai); // mendealokasikan dengan bahasa C
delete [] nilai; // mendealokasikan dengan bahasa C++
selanjutnya pengalokasian diatas dapat dengan mudah kita
membentuk suatu struktur data link list maupun double link list dengan
menggunakan bahasa C/C++.Berikut ini akan diberikan contoh program
dengan menggunakan fungsi standar diatas (langsung dengan menggunakan C+
+) :
3. Pointer ke Pointer
Pointer ke pointer merupakan suatu pointer yang menunjuk ke
alamat pointer yang lainnya. Dengan menggunakan dua buah asterik pada variabel
pointer, maka variabel pointer tersebut dapat mengakses ke variabel pointer
yang lainnya. Contohnya :
#include <iostream.h>
void main()
{
int a, *b, **c;
a = 1000; // mendeklarasikan variabel pointer
b = &a; // memberikan nilai a sama dengan 1000
c = &b; // dengan statement ini variabel pointer sekarang menunjuk
ke alamat variabel a
cout << *b; // dengan statement ini variabel pointer sekarang menunjuk
ke alamat variabel a
cout << endl; // menampilkan isi dari variabel pointer b berupa alamat
cout << **c; // ganti baris baru
1 pointer c // menampilkan isi dari variabe
}
Dari program diatas dapat disimpulkan bahwa dengan
menggunakan pointer ke pointer, isi dari pointer yang terakhir merupaka
alamat memori dari variabel pointer sesungguhnya. Pada contoh diatas,
variabel b yang menunjuk ke variabel a ditunjuk kembali oleh variabel c

TEKNIKNOLOGI REKAYASA INSTALASI ZULKIFLI ANDRIANTO


LISTRIK SARJANA TERAPAN 2022340008
Praktikum Pemrograman
INSTITUT TEKNOLOGI PADANG STL1411
sehingga nilai dari variabel c sebenarnya sama dengan variabel b dan
variabel a
Dengan menggunakan pointer yang benar, anda dapat menyusun
sebuah programyang berkemampuan tinggi. Sebaliknya sedikit saja kesalahan
dalam menggunakan pointer akanmengakibatkan kesalahan fatal pada
program anda. Karena pointer dapat langsungmenunjukan pada lokasi
memori, jika lokasi yang ditunjuk salah, berarti data yang diambiljuga akan
salah, dan sudah tentu program anda akan menjadi salah juga.
Tipe variable sama dengan tipe yang dikenal oleh variable biasa, misalnya
int, float, chardan sebagainya. Nama variabel pointer juga mengikuti
ketentuan nama variable biasa. Yangmembedakan variabel pointer dengan
variable biasa dengan menggunakan tanda asterisk (*)didepan nama
varibel pada waktu deklarasi.

6.2 Alat dan Bahan

TEKNIKNOLOGI REKAYASA INSTALASI ZULKIFLI ANDRIANTO


LISTRIK SARJANA TERAPAN 2022340008
Praktikum Pemrograman
INSTITUT TEKNOLOGI PADANG STL1411
1. PC/Laptop
2. Koneksi Internet
6.3 Langkah Kerja
1. Buka laptop/pc
2. Dan bukalah aplikasi code::blocks
3. Sehingga muncul pilihan file baru apa yang ingin kita buat.
4. Pilihlah pada jendela New From Template – File. Dan kemudian buatlah
listing programnya
5. Kemudian setelah membuat listing program lalu,klik build and run untuk
mengecek suatu program yang kita buat.
6. Dan kemudian simpan file dari program yang kita buat jika tidak ada
ditemukan kesalahan apapun(error 0).

6.4 Listing Program

TEKNIKNOLOGI REKAYASA INSTALASI ZULKIFLI ANDRIANTO


LISTRIK SARJANA TERAPAN 2022340008
Praktikum Pemrograman
INSTITUT TEKNOLOGI PADANG STL1411
1. Penggunaan Variabel Address Memory
/* Listing Program Modul 6 Untuk Kegiatan Praktikum 1
(Penggunaan Variabel Address Memory)
------------------------------------------------------------*/

#include <iostream>
using namespace std;

int main()
{
unsigned short shortVar=5;
unsigned long longVar=65535;
long sVar = -65535;

cout << "shortVar:\t " << shortVar;


cout << "\t Address of shortVar:\t";
cout << &shortVar << "\n";

cout << "longVar:\t " << longVar;


cout << "\t Address of longVar:\t" ;
cout << &longVar << "\n";

cout << "sVar:\t\t" << sVar;


cout << "\t Address of sVar:\t" ;
cout << &sVar << "\n";

return 0;
}
2. Memanipulasi Data Menggunakan Pointer
/* Listing Program Modul 6 Untuk Kegiatan Praktikum 2
(Memanipulasi Data Menggunakan Pointer)
-------------------------------------------------------*/

TEKNIKNOLOGI REKAYASA INSTALASI ZULKIFLI ANDRIANTO


LISTRIK SARJANA TERAPAN 2022340008
Praktikum Pemrograman
INSTITUT TEKNOLOGI PADANG STL1411

#include <iostream>
using namespace std;
typedef unsigned short int USHORT;

int main()
{
USHORT myAge; // pendeklarasian variabele myAge
USHORT *pAge = 0; // pendeklarasian pointer *pAge
myAge = 5;
cout << "myAge: " << myAge << "\n";

pAge = &myAge; // menetapkan alamat myAge ke pointer Age

cout << "*pAge: " << *pAge << "\n\n";

cout << "*pAge = 7\n";

*pAge =7;

cout << "*pAge: " << *pAge << "\n";


cout << "myAge: " << myAge << "\n\n";

cout << "myAge = 9\n";

myAge = 9;

cout << "myAge: " << myAge << "\n";


cout << "*pAge: " << * pAge << "\n";

return 0;
}

TEKNIKNOLOGI REKAYASA INSTALASI ZULKIFLI ANDRIANTO


LISTRIK SARJANA TERAPAN 2022340008
Praktikum Pemrograman
INSTITUT TEKNOLOGI PADANG STL1411
3. Melihat Data Yang Tersimpan Pada Suatu Pointer
/* Listing Program Modul 6 Untuk Kegiatan Praktikum 3
(Melihat Data Yang Tersimpan Pada Suatu Pointer)
------------------------------------------------------------------------*/

#include <iostream>
using namespace std;
typedef unsigned short int USHORT;

int main()
{
unsigned short int myAge = 5, yourAge = 10;
unsigned short int * pAge = &myAge; // a pointer

cout << "myAge :\t" << myAge << "\t\tyourAge:\t" << yourAge << "\n";
cout << "&myAge:\t" << &myAge << "\t&yourAge:\t" << &yourAge <<"\n\
n";

cout << "pAge :\t" << pAge << "\n";


cout << "*pAge :\t" << *pAge << "\n\n";

pAge = &yourAge; // reassign the pointer

cout << "myAge :\t" << myAge << "\t\tyourAge:\t" << yourAge << "\n";
cout << "&myAge:\t" << &myAge << "\t&yourAge:\t" << &yourAge <<"\n\
n";

cout << "pAge :\t" << pAge << "\n";


cout << "*pAge :\t" << *pAge << "\n\n";

cout << "&pAge :\t" << &pAge << "\n";


return 0;

TEKNIKNOLOGI REKAYASA INSTALASI ZULKIFLI ANDRIANTO


LISTRIK SARJANA TERAPAN 2022340008
Praktikum Pemrograman
INSTITUT TEKNOLOGI PADANG STL1411
}
4. Mengalokasikan Menggunakan dan Menghapus Pointer
/* Listing Program Modul 6 Untuk Kegiatan Praktikum 4
(Mengalokasikan Menggunakan dan Menghapus Pointer)
------------------------------------------------------------------*/

#include <iostream>
using namespace std;

int main()
{
int localVariable = 5;
int *pLocal= &localVariable;
int *pHeap = new int;
if (pHeap == NULL)
{
cout << "Error! No memory for pHeap!!";
return 0;
}
*pHeap = 7;
cout << "localVariable: " << localVariable << "\n";
cout << "*pLocal: " << *pLocal << "\n";
cout << "*pHeap: " << *pHeap << "\n";
delete pHeap;
pHeap = new int;
if (pHeap == NULL)
{
cout << "Error! No memory for pHeap!!";
return 0;
}
*pHeap = 9;
cout << "*pHeap: " << *pHeap << "\n";

TEKNIKNOLOGI REKAYASA INSTALASI ZULKIFLI ANDRIANTO


LISTRIK SARJANA TERAPAN 2022340008
Praktikum Pemrograman
INSTITUT TEKNOLOGI PADANG STL1411
delete pHeap;
return 0;

6.5 Hasil Percobaan


TEKNIKNOLOGI REKAYASA INSTALASI ZULKIFLI ANDRIANTO
LISTRIK SARJANA TERAPAN 2022340008
Praktikum Pemrograman
INSTITUT TEKNOLOGI PADANG STL1411
1. Penggunaan Variabel Address Memory

Gambar 6.1 Tampilan Hasil Variabel Address Memory


2. Memanipulasi Data Menggunakan Pointer

Gambar 6.2 Tampilan Hasil Memanipulasi Data Menggunakan Pointer

3. Melihat Data Yang Tersimpan Pada Suatu Pointer

TEKNIKNOLOGI REKAYASA INSTALASI ZULKIFLI ANDRIANTO


LISTRIK SARJANA TERAPAN 2022340008
Praktikum Pemrograman
INSTITUT TEKNOLOGI PADANG STL1411

Gambar 6.3 Tampilan Hasil Melihat Data Yang Tersimpan Pada Suatu Pointer
4. Mengalokasikan Menggunakan dan Menghapus Pointer

Gambar 6.4 Tampilan Hasil Mengalokasikan Mengunakan Dan Menghapus


Pointer

DAFTAR PUSTAKA

TEKNIKNOLOGI REKAYASA INSTALASI ZULKIFLI ANDRIANTO


LISTRIK SARJANA TERAPAN 2022340008
Praktikum Pemrograman
INSTITUT TEKNOLOGI PADANG STL1411
1. https://www.academia.edu/5229674/
laporan_pointer_dalam_c(Senin15November2022.Jam12.15)
2. https://www.scribd.com/doc/82390711/
PengertianPointer(Senin15November2021.Jam13.20)
3. https://pdfcoffee.com/qdownload/laporan-resmi-24-27-konsep-
pemrograman-pointer-pdf-free.html(Selasa16November2022.Jam08.12)
4. https://www.petanikode.com/cpointer/(Selasa16November2022.Jam19.00)

TEKNIKNOLOGI REKAYASA INSTALASI ZULKIFLI ANDRIANTO


LISTRIK SARJANA TERAPAN 2022340008
Praktikum Pemrograman
INSTITUT TEKNOLOGI PADANG STL1411

TEKNIKNOLOGI REKAYASA INSTALASI ZULKIFLI ANDRIANTO


LISTRIK SARJANA TERAPAN 2022340008

Anda mungkin juga menyukai