Algoritma dan Struktur Data Praktikum 3
Pointer Tujuan : −
mahasiswa dapat mendefinisikan pointer
−
mahasiswa dapat memahami operasi pada pointer
−
mahasiswa dapat menerapkan pointer pada contoh kasus
Pengertian Pointer merupakan variabel yang digunakan untuk menunjukkan suatu alamat memori komputer.
Deklarasi Pointer dapat dinyatakan dalam C ++ menggunakan sintaks berikut:
tipe_data *nama_pointer; Operator pointer: &nama_pointer menunjukkan alamat nama_pointer *nama_pointer menunjukkan nilai dari alamat nama_pointer Contoh 1 #include
using namespace std; main() { int a, b; a = 30; b = a - 5; int *ubah; ubah = &a; *ubah = 20; ubah = &b; *ubah = 10; }
cout<<"\nNilai 1 = "<< a <<" dan nilai 2 = "<< b;
Jelaskan tentang sintaks yang terdapat pada Contoh 1!
Jurusan Teknik Informatika Politeknik Negeri Tanah Laut
Oleh: Winda Aprianti, M.Si
Algoritma dan Struktur Data Praktikum 3
Operasi pada Pointer Pada pointer terdapat 3 jenis operator, yaitu operator penugasan, operator aritmatika, dan operator logika. a.
Operator Penugasan Nilai dari suatu variabel pointer dapat disalin ke variabel pointer yang lain. Contoh 2 float nilai,*p1,*p2; nilai = 14.54; cout << "nilai = “ << nilai <<", alamatnya "<<&nilai; p1 = &nilai; p2 = p1; cout << "\n nilai p1 = “ << *p2 <<", p1 menunjuk alamat "<
Buatlah contoh lain untuk Operator Penugasan dan jelaskan! b.
Operator Aritmatika Pada pointer dapat dilakukan operasi aritmatika, yaitu operasi penambahan dan pengurangan. Namun operasi ini hanya terbatas untuk tipe data integer saja. Contoh 3 #include using namespace std; void main(){ int nilai[5], *penunjuk; clrscr(); nilai[0] = 125; nilai[1] = 345; nilai[2] = 750; nilai[3] = 800; nilai[4] = 900; penunjuk = &nilai[0]; cout<<"Nilai "<<*penunjuk<<" ada di alamat memori "<
Buatlah contoh lain untuk Operator Aritmatika dan jelaskan! Jurusan Teknik Informatika Politeknik Negeri Tanah Laut
Oleh: Winda Aprianti, M.Si
Algoritma dan Struktur Data Praktikum 3 c.
Operator Logika Pada pointer dapat digunakan operator logika, yaitu if (pernyataan) { perintah; … } else { perintah; … } Contoh 4 #include using namespace std; void main() { int *pa, *pb, a = 100, b = 10; clrscr(); pa = &a; pb = &b; if (*pa < *pb) { cout<<"pa menunjuk ke memori lebih RENDAH dari pb\n"; } else if (*pa == *pb) { cout<<"pa menunjuk ke memori yang SAMA dengan pb\n"; } else { cout<<"pa menunjuk ke memori lebih TINGGI dari pb\n"; } }
Buatlah contoh lain untuk Operator Logika dan jelaskan! Structure of Pointer Pointer dapat diakses dengan struktur. Variabel pointer dari struktur dapat dideklarasikan sebagai berikut. struct nama_struktur { tipe_data1 elemen1; tipe_data2 elemen2; ….. }*nama_pointer; Jurusan Teknik Informatika Politeknik Negeri Tanah Laut
Oleh: Winda Aprianti, M.Si
Algoritma dan Struktur Data Praktikum 3
Pengaksesan Struktur Elemen dari struktur melalui pointer dapat diakses dengan dua cara: a. Merujuk pointer ke alamat lain untuk mengakses memori Deklarasi untuk mengakses anggota stuktur melalui pointer dapat dilihat pada cara berikut. struct nama_struktur { tipe_data1 elemen1; tipe_data2 elemen2; ….. }*nama_pointer, nama_objek; main() { nama_pointer = &nama_objek; } atau struct nama_struktur { tipe_data1 elemen1; tipe_data2 elemen2; ….. }; main() { struct nama_struktur *nama_pointer, nama_objek; nama_pointer = &nama_objek; } atau struct nama_struktur { tipe_data1 elemen1; tipe_data2 elemen2; ….. } nama_objek; struct nama_struktur *nama_pointer ={&nama_objek}; Elemen pointer struktur dapat diakses menggunakan: (*nama_pointer).elemen
Jurusan Teknik Informatika Politeknik Negeri Tanah Laut
atau
nama_pointer -> elemen
Oleh: Winda Aprianti, M.Si
Algoritma dan Struktur Data Praktikum 3 Contoh 5 #include using namespace std; struct orang{ char nama[30],alamat[30]; int umur; }; main() { struct orang *saya, s; saya = &s; cout << "Nama : "; cin >> saya->nama; cout << "Alamat : "; cin >> saya->alamat; cout << "Umur : "; cin >> saya->umur; cout << "=================================" <<endl; cout << saya->nama <<", Kota "<< saya->alamat <<", " << saya->umur <<" tahun"; }
Contoh 6 #include using namespace std; struct waktu{ int jam; int menit; }; struct rencana{ struct waktu *awal; struct waktu *akhir; }; struct waktu a; struct waktu b; struct rencana kerja = {&a, &b}; int main() { kerja.awal->jam = 2; kerja.awal->menit= 30; kerja.akhir->jam = 3; kerja.akhir->menit = 45; cout<<"Waktu Awal : "<<endl; cout<jam<<" jam "<menit<<" menit"<<endl; cout<<"Waktu Akhir : "<<endl; cout<jam<<" jam "<menit<<" menit"<<endl; } Jurusan Teknik Informatika Politeknik Negeri Tanah Laut
Oleh: Winda Aprianti, M.Si
Algoritma dan Struktur Data Praktikum 3
b.
Menggunakan alokasi memori dinamis
Untuk mengakses elemen struktur menggunakan pointer, memori dapat dialokasikan secara dinamis menggunakan malloc() function yang terdefinisi di bawah header stdlib.h. Deklarasi untuk menggunakan malloc() nama_pointer = (cast-type*)malloc(byte-size) Contoh 7 #include <stdio.h> #include <stdlib.h> struct name { int a; float b; char c[30]; }; int main(){ struct name *ptr; int i,n; printf("Masukkan n: "); scanf("%d",&n); ptr=(struct name*)malloc(n*sizeof(struct name)); /* Above statement allocates the memory for n structures with pointer ptr pointing to base address */ for(i=0;ic,&(ptr+i)->a,&(ptr+i)->b); } printf("\nTampilkan informasi yang telah dimasukkan:\n"); for(i=0;ic,(ptr+i)->a,(ptr+i)->b); return 0; }
Jurusan Teknik Informatika Politeknik Negeri Tanah Laut
Oleh: Winda Aprianti, M.Si