Pointer (Part 1).

Slides:



Advertisements
Presentasi serupa
POINTER.
Advertisements

PEMROGRAMAN SISTEM ARRAY Pertemuan VII. ARRAY Array adalah suatu struktur yang terdiri dari sejumlah elemen yang memiliki tipe data yang sama. Array adalah.
PEMROGRAMAN SISTEM PERNYATAAN DASAR PERULANGAN Pertemuan V
PERTEMUAN IV POINTER Pointer adalah suatu variabel penunjuk yang menunjuk pada suatu alamat memori komputer Pointer merupakan.
Elemen Dasar C++.
STRUKTUR DATA (5) Pointer dan Function
Pointer Konsep Pemrograman.
Pointer.
PEMROGRAMAN SISTEM POINTER Pertemuan X. ALAMAT & POINTER Pointer sesungguhnya berisi alamat memory yang menyimpan data. Pointer sesungguhnya berisi alamat.
Struktur Sugeng Supriyadi, M.Kom.
Modul 11 – Hendi Hermawan - 1
Dasar Pemrograman MODUL 06 PERCABANGAN.
POINTER
3 Variabel, Konstanta Tipe Data dan dalam Bahasa C/C++ Java dan Bab
Pembahasan soal-soal pemrograman terstruktur
PENGENALAN c++ DAN STRUKTUR DASAR C++
Uji Coba materi Struktur Data
Pointer Variabel pointer sering disebut sebagai variabel yang menunjuk obyek lain, karena variabel pointer atau pointer adalah variabel yang berisi alamat.
Algoritma & Struktur Data Pointer Evangs Mailoa.
Person 10Person Variabel Lokal dan Global Suatu variabel lokal dideklarasikan di dalam fungsi ‘a’, dan tidak dapat diakses di luar fungsi (a)
PEMROGRAMAN SISTEM PERNYATAAN DASAR PILIHAN Pertemuan V
Pemrograman Dasar Fungsi.
ARRAY OF STRUCT Apabila hendak menggunakan 1 struct untuk beberapa kali, ada 2 cara : Deklarasi manual #include typedef struct Mahasiswa { char.
STRUKTUR DATA (5) Pointer dan Function
Fungsi.
Pemrograman Dasar Pointers.
Pointer Dr. Lily Wulandari.
POINTER (VAR.PENUNJUK)
Pertemuan 22 POINTER Bag.2 Dasar Pemrograman Renni Angreni, S.Kom.
STRUKTUR DATA Pointer dan Function
#include //bagian modul int hitung(x,y) { return(x+y); } //bagian utama main() { int jumlah,a,b; a=8; b=2; jumlah=hitung(a,b); cout
P O I N T E R. Merupakan sebuah variabel yang berisi alamat dari variabel lain. Suatu pointer dimaksudkan untu menunjukan ke suatu alamat memori sehingga.
Pertemuan 6 IF Bersarang / IF Bertingkat Nested IF Dasar Pemrograman.
Algoritma dan Struktur Data
Bab 8 Pointer Riyanto Sigit Konsep Dasar Pointer  Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke obyek lain  Variabel.
STRUCT OF ARRAY Apabila hendak menggunakan 1 struct untuk beberapa kali, ada 2 cara : Deklarasi manual #include typedef struct Mahasiswa { char.
Pemrograman Berorientasi Obyek1 Sub Pokok Bahasan Pointer. Reference. Function Passing Parameter by Value, by Reference, by Pointer.
Pointer.
Algoritma dan Pemrograman 2C
Bab 05 Tipe Data dan Mengisi Variabel
Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006
POINTER.
Dibuat o/ : Renni Angreni, S.Kom.
Teknik Pemrog. Terstruktur 2
Tenia Wahyuningrum pointers Tenia Wahyuningrum
PEMROGRAMAN SISTEM PERNYATAAN DASAR FUNGSI Pertemuan VI
STRUKTUR PERULANGAN 2 (LOOPING-2)
POINTER Bag.2 Pertemuan 22 Dibuat oleh : Renni Angreni, S.Kom. Triana Elizabeth, S.Kom.
DASAR STRING PEMROGRAMAN SISTEM.
Fungsi, Array dan String
PEMROGRAMAN SISTEM DASAR STRING Pertemuan VIII
8. Pointer S. Indriani L, M.T 8. Pointer.
Statement Control (if dan switch)
Struktur Data Pointer Oleh Lutfi Budi Ilmawan
5. Fungsi S. Indriani L, M.T 5. Fungsi.
Pertemuan 21 POINTER Bag.1 Dasar Pemrograman Renni Angreni, S.Kom.
STRUKTUR DATA Pengenalan C++
FUNCTION Fungsi (Function) merupakan sekumpulan instruksi yang membentuk satu unit serta memiliki nama. Fungsi digunakan.
Pointer Variabel pointer sering disebut sebagai variabel yang menunjuk obyek lain, karena variabel pointer atau pointer adalah variabel yang berisi alamat.
Pointer FARID WAJDI YUSUF.
P O I N T E R.
Algoritma dan Struktur Data
~ PERTEMUAN 4 KONSEP TIPE DATA ~
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Algoritma dan Struktur Data
Pemrograman Bahasa C sRi nurhayati, mt.
VARIABEL, TIPE DATA, OPERATOR
Pertemuan 3 Input/output Statement Assignment Statement
Pointer.
Transcript presentasi:

Pointer (Part 1)

Alamat dan Pointer Konsep pointer sebenarnya cukup sederhana. Pointer sesungguhnya berisi alamat dari suatu data, bukan data sebagaimana variabel yang telah anda kenal.

Alamat dan Pointer Setiap byte di dalam memori komputer memiliki sebuah alamat. Di dalam memori inilah variabel disimpan. Tetapi tentu saja pemrogram tidak perlu menyebutkan alamat dari suatu variabel secara explisit. Pada saat program dimuat di dalam memori, variabel akan diletakkan dengan sendirinya pada alamat tertentu.

Alamat dan Pointer Suatu pointer di dalam program dimaksudkan untuk menunjuk suatu alamat memori. Misalnya kalau pint adalah pointer, dan vint adalah variabel yang terletak di memori beralamat 0xfff2, pointer pint dapat diatur agar menunjuk ke variabel vint.

Alamat dan Pointer

Mengetahui Alamat Suatu Variabel Alamat suatu variabel dapat diketahui dengan mudah, caranya tambahkan operator alamat, berupa simbol & di depan nama variabel. Dengan mengirimkan ke cout, alamat dari suatu variabel akan ditampilkan ke layar.

Mengetahui Alamat Suatu Variabel #include <iostream.h> #include <conio.h> void main() { int bil1 = 5; float bil2 = 7.5; double bil3 = 17.777; cout<<"Isi variabel : "<<endl; cout<<"bil1 = "<<bil1<<endl; cout<<"bil2 = "<<bil2<<endl; cout<<"bil3 = "<<bil3<<endl; cout<<endl; cout<<"Alamat variabel : "<<endl; cout<<"bil1 = "<<&bil1<<endl; cout<<"bil2 = "<<&bil2<<endl; cout<<"bil3 = "<<&bil3<<endl; getch(); } Mengetahui Alamat Suatu Variabel

Mengetahui Alamat Suatu Variabel Perlu diketahui, notasi 0x pada hasil program di depan menyatakan notasi heksadesimal. Pada C++, tanda & juga dipakai untuk referensi (alias dari suatu variabel).

Mendefinisikan Variabel Pointer Format : tipe_data dapat berupa sembarang tipe data seperti halnya variabel bukan pointer. nama_variabel adalah variabel pointer. tipe_data *nama_variabel

Mengisi Variabel Pointer Supaya variabel pointer menunjuk ke variabel lain, mula-mula harus diisi dengan alamat dari variabel yang hendak ditunjuk. Misalnya terdapat pendefinisian seperti berikut : Variabel pint dapat diatur agar menunjuk ke vint dengan cara sebagai berikut : Pernyataan diatas berarti : “pint diisi dengan alamat dari vint”. int vint = 55; int *pint; pint = &vint;

#include <iostream.h> #include <conio.h> void main() { int vint = 55; int *pint; pint = &vint; //pointer menunjuk ke vint cout<<"Alamat vint = "<<&vint<<endl; cout<<"Isi pint = "<<pint<<endl; getch(); }

Mengisi Variabel Pointer Pada contoh di depan : Baris tersebut ternyata menampilkan isi dari pointer itu sendiri, bukan isi dari variabel vint. cout<<"pint = "<<pint<<endl;

Mengakses Nilai Yang Ditunjuk Pointer Berdasarkan contoh di depan, nilai dari vint dapat diakses melalui pint setelah pernyataan dibawah ini dijalankan. Cara mengaksesnya adalah dengan melibatkan operator “tak langsung” yang berupa simbol * dan diletakkan di depan nama variabel pointer. Contoh : Berarti “nilai yang ditunjuk oleh pint”. pint = &vint; *pint;

#include <iostream.h> #include <conio.h> void main() { int vint = 55; int *pint; pint = &vint; //pointer menunjuk ke vint cout<<"Isi vint = "<<vint<<endl; cout<<"Alamat vint = "<<&vint<<endl; cout<<"Isi pint = "<<pint<<endl; cout<<"Nilai yang ditunjuk oleh pint : "<<*pint<<endl; getch(); }

Mengakses Nilai Yang Ditunjuk Pointer Program di depan menunjukkan pengaksesan terhadap vint dapat dilakukan melalui *pint. Contoh berikut menunjukkan isi vint diubah melalui *pint.

#include <iostream.h> #include <conio.h> void main() { int vint = 55; int *pint; pint = &vint; //pointer menunjuk ke vint cout<<"Isi vint semula = "<<vint<<endl; *pint = 77; cout<<"Isi vint sekarang = "<<vint<<endl; getch(); }

Pointer Void Pada contoh-contoh program di depan telah ditunjukkan pointer yang menunjuk ke tipe data tertentu. Sebenarnya juga dimungkinkan untuk membuat pointer tak bertipe. Caranya yakni dengan meletakkan kata kunci void di bagian penentu tipe pointer. Contoh : Suatu pointer void seperti contoh diatas dapat digunakan untuk menunjuk ke sembarang tipe data. void *ptr;

#include <iostream.h> #include <conio.h> void main() { int bil1 = 55; float bil2 = 33.45; void *ptr; ptr = &bil1; //bisa menunjuk ke int cout<<"Nilai yang ditunjuk ptr : "<<*(int*)ptr<<endl; ptr = &bil2; //bisa menunjuk ke float cout<<"Nilai yang ditunjuk ptr : "<<*(float*)ptr<<endl; getch(); }

Pointer Void Pada program di depan, bentuk berikut perlu diberikan : Ini disebabkan C++ tidak tahu maksud *ptr mengingat ptr adalah pointer void. Cara ini bukan hanya berlaku jika kita bermaksud mengambil nilai yang ditunjuk oleh ptr tapi juga ketika kita mengubahnya. Seperti contoh program berikut : *(int*)ptr *(float*)ptr

#include <iostream.h> #include <conio.h> void main() { int bilangan = 55; void *ptr; ptr = &bilangan; cout<<"bilangan semula : "<<bilangan<<endl; *(int*)ptr = 77;//mengubah nilai bilangan melalui ptr cout<<"bilangan sekarang : "<<bilangan<<endl; getch(); }

Pointer (Part 2)

Pointer dan Array ptgl = tgl_lahir; int tgl_lahir[] = {24, 6, 1965}; Pointer dan array memiliki hubungan yang dekat. Secara internal array juga menyatakan alamat. Misalnya, didefinisikan : Agar ptgl menunjuk ke array, diperlukan pernyataan berupa : Perhatikan tidak ada tanda & di depan tgl_lahir. Ini disebabkan nama array sebenarnya sudah menyatakan alamat. Oleh karena itu tanda & tidak diperlukan. int tgl_lahir[] = {24, 6, 1965}; int *ptgl; ptgl = tgl_lahir;

Pointer dan Array Pernyataan seperti : Dimana ptgl adalah pointer dan tgl_lahir adalah array, identik dengan : ptgl = tgl_lahir; ptgl = &tgl_lahir[0];

#include <iostream.h> #include <conio.h> void main() { int tgl_lahir[] = {24, 6, 1965}; int *ptgl; ptgl = tgl_lahir; //ptgl menunjuk ke array cout<<"Nilai yang ditunjuk oleh ptgl : "; cout<<*ptgl<<endl; cout<<"Nilai dari tgl_lahir[0] : "; cout<<tgl_lahir[0]<<endl; getch(); }

Pointer dan Array Seluruh elemen array dapat ditampilkan dengan pernyataan : Bentuk tgl_lahir[i] dapat diubah menjadi notasi pointer seperti berikut : Contoh program : for(int i=0; i<3; i++) cout<<tgl_lahir[i]<<endl; for(int i=0; i<3; i++) cout<<*(ptgl + i)<<endl;

#include <iostream.h> #include <conio.h> void main() { int tgl_lahir[] = {24, 6, 1965}; int *ptgl; ptgl = tgl_lahir; //ptgl menunjuk ke array for(int i=0; i<3; i++) cout<<*(ptgl + i)<<endl; getch(); }

Pointer dan Array Perlu diketahui, pada notasi seperti : *(ptgl + i) tgl_lahir + i tidak berarti : Tetapi dengan bijaksana dapat mengetahui bahwa tgl_lahir + i berarti : *(ptgl + i) ptgl + (i byte) ptgl + (ukuran tipe elemen ptgl)*i

Pengaksesan Array Melalui Pointer

Pointer dan Array Seluruh elemen array juga dapat diakses melalui variabel pointer. Salah satu caranya yaitu dengan mengubah isi variabel pointer sesuai dengan alamat masing-masing elemen array.

#include <iostream.h> #include <conio.h> void main() { int tgl_lahir[] = {24, 6, 1965}; int *ptgl; ptgl = tgl_lahir; for(int i=0; i<3; i++) cout<<"ptgl = "<<ptgl<<endl; cout<<"*ptgl = "<<*ptgl<<endl; ptgl++; } getch();

Pointer (Part 3)

Pointer dan String #include <iostream.h> Contoh hubungan pointer dan string : #include <iostream.h> #include <conio.h> void main() { char *ptokoh = "gatotkaca"; cout<<ptokoh<<endl; getch(); }

Pointer dan String Pada contoh diatas : Akan menyebabkan C++ : Mengalokasikan ptokoh sebagai variabel pointer yang menunjuk ke data bertipe char dan menempatkan konstanta string “gatotkaca” ke suatu lokasi di memori komputer. Kemudian ptokoh akan menunjuk ke lokasi string “gatotkaca”. char *ptokoh = “gatotkaca”;

Pointer dan String Pernyataan didepan menyerupai pernyataan : Perbedaannya : ptokoh adalah pointer yang dengan mudah dapat diatur agar menunjuk ke data string. tokoh adalah array yang menyatakan alamat yang konstan, tidak dapat diubah. Yang dapat diubah adalah elemen array-nya. Perbedaannya ditunjukkan oleh program berikut : char tokoh[] = “gatotkaca”;

#include <iostream.h> #include <conio.h> void main() { char tokoh[] = "gatotkaca"; char *ptokoh = "gatotkaca"; cout<<"tokoh = "<<tokoh<<endl; cout<<"ptokoh = "<<ptokoh<<endl; //tokoh++; //tidak diperkenankan ptokoh++; //diperkenankan getch(); }

Array Pointer Suatu array bisa digunakan untuk menyimpan sejumlah pointer. Contoh : Merupakan pernyataan untuk mendefinisikan array namahari yang berisi 7 buah elemen berupa pointer. Pointer ini menunjuk ke data bertipe char. char *namahari[7];

#include <iostream.h> #include <conio.h> void main() { char *namahari[7] = {"senin", "selasa", "rabu", "kamis", "jum'at", "sabtu", "minggu"}; for(int i=0; i<7; i++) cout<<namahari[i]<<endl; } getch();

Pointer Menunjuk Pointer Suatu pointer bisa saja menunjuk pointer yang lain. Untuk itu diperlukan pendefinisian sebagai berikut : int var_x; int *ptr1; //satu tanda * di depan ptr1 int **ptr2; //dua tanda * di depan ptr2

Pointer Menunjuk Pointer Pada pendefinisian diatas : var_x adalah variabel bertipe int. ptr1 adalah variabel pointer yang menunjuk ke data bertipe int. ptr2 adalah varibel pointer yang menunjuk ke pointer int. Agar ptr1 menunjuk ke var_x dan ptr2 menunjuk ke ptr1, maka diperlukan perintah : ptr1 = &var_x; ptr2 = &ptr1;

#include <iostream.h> #include <conio.h> void main() { int var_x = 273; int *ptr1; int **ptr2; cout<<"var_x = "<<var_x<<endl; ptr1 = &var_x; ptr2 = &ptr1; //mengakses nilai var_x melalui ptr1 cout<<"*ptr1 = "<<*ptr1<<endl; //mengakses nilai var_x melalui ptr2 cout<<"**ptr1 = "<<**ptr2<<endl; getch(); }