180 likes | 431 Views
Pointer, Array dan String. Erizal , S.Si , M.Kom Universitas Respati Yogyakarta erizalmik@yahoo.com http://erizal.wordpress.com. POINTER. Setiap kali komputer menyimpan data, maka sistem operasi akan mengorganisasikan lokasi pada memori pada alamat yang unik.
E N D
Pointer, Array dan String Erizal, S.Si, M.Kom UniversitasRespati Yogyakarta erizalmik@yahoo.com http://erizal.wordpress.com
POINTER • Setiap kali komputer menyimpan data, maka sistem operasi akan mengorganisasikan lokasi pada memori pada alamat yang unik. • Misal : untuk alamat memori 1776, hanya sebuah lokasi yang memiliki alamat tersebut. Dan alamat 1776 pasti terletak antara 1775 dan 1777.
POINTER • Merupakan variabel yang fungsinya menyimpan alamat (address) variabel • Fasilitas untuk mengakses suatu variabel dengan memakai adress
Kegunaan Pointer • Calling by reference • Mengembalikan lebih satu nilai dari satu fungsi • Mengirimkan array dan string dari suatu fungsi ke fungsi lain • Memudahkan dalam manipulasi array • Manipulasi memory dalam system • Membuat struktur data dinamis seperti linklist, tree, graph dan sebagainya
Operator (1) • Dalam pointer, terdapat 2 jenis operator yang biasa digunakan. • Operator Alamat / Dereference Operator(&) • Setiap variabel yang dideklarasikan, disimpan dalam sebuah lokasi memori dan pengguna biasanya tidak mengetahui di alamat mana data tersebut disimpan. • Dalam C++, untuk mengetahui alamat tempat penyimpanan data, dapat digunakan tanda ampersand(&) yang dapat diartikan “alamat”. • Contoh : • Bil1 = &Bil2; • Dibaca: isi variabel bil1 sama dengan alamat bil2
Operator (2) • Operator Reference (*) • Penggunaan operator ini, berarti mengakses nilai sebuah alamat yang ditunjuk oleh variabel pointer. • Contoh : • Bil1=*Bil2; • dibaca: bil1 sama dengan nilai yang ditunjuk oleh bil2
Deklarasi • Deklarasi variabel pointer • tipe * nama_pointer; • Tipe merupakan tipe data yang akan ditunjuk oleh variabel, bukan tipe data dari pointer tersebut. • Contoh : • int *ptrA; • ptrA adalah variabel pointer untuk tipe data integer
Contoh • Jika misalnya variabel A berisi nilai 23, dan ptrA menunjuk variabel A yang merupakan representasi alamat memory nomor 2, maka hal tersebut dapat diilustrasikan seperti berikut :
Proses • Dalam kode C dapat dituliskan seperti berikut : Int A; Int *ptrA; A=23; *ptrA=&A; • Jadi operator * digunakan untuk menyatakan isi (content of) pointer, sedangkan operator & digunakan untuk menyatakan alamat memory (adress of) variabel . • Jika ingin meng-akses (mencetak) nilai 23 (isi memory) melalui variabel biasa, maka perintahnya adalah : Printf(“%d”,A); • Jika ingin meng-akses (mencetak) nilai 23 (isi memory) melalui pointer, maka perintahnya adalah : Printf(“%d”,*ptrA);
Contoh Program /* Nama File :pointer.c */ #include <stdio.h> #include <conio.h> void main() { int A;//deklarasi var biasa int *ptrA; //deklarasi var pointer clrscr(); A=23; ptrA=&A; printf("\n A = %d",A); //isi dari var A printf("\n&A = %u",&A); //alamat memory var A printf("\n*(&A) = %u",*(&A));//isi di alamat pada var A printf("\nptrA = %u",ptrA);//isi dari var pointer ptrA printf("\n*ptrA = %d",*ptrA);//isi di alamat pada var ptrA printf("\n&ptrA = %u",&ptrA);//alamat memory var ptrA getch(); }
Contoh Pointer untuk Argumen Fungsi Call by Reference /*Nama File : tukar2.c - Prinsip Call by reference*/ #include <stdio.h> #include <conio.h> void tukar(int *a,int *b) { int temp; temp=*a; *a=*b; *b=temp; } void main() { clrscr(); int x=3, y=5; printf("\nNilai x dan y semula"); printf("\nx = %d y = %d",x,y); tukar(&x,&y); printf("\nNilai x dan y kemudian"); printf("\nx = %d y = %d",x,y); getch(); }
Array dan Pointer • Nama array adalah alamat memory (pointer) pertama dari elemen array tersebut. Jika A adalah array berdimensi satu maka alamat memory dari elemen pertama adalah &A[0] atau A saja. Sehingga &A[i] sama dengan (A+i). Maka A[i] pun sama dengan *(A+i) • Berikut contoh program tentang bagaimana mengakses data array menggunakan konsep pointer :
Contoh Program /* Nama file :p_array.c */ #include <stdio.h> #include <conio.h> void main() { int Nilai[5]={55,75,60,90,80}; clrscr(); for(int i=0;i<5;i++) { //akses dengan indeks array printf("\n Nilai[%d] = %d",i,Nilai[i]); //akses dengan pointer printf("\n *(Nilai+%d)= %u",i,*(Nilai+i)); } }
String dan Pointer • String adalah array dari tipe character yang diakhiri dengan null character (\0) • Data konstan string ditulis dengan diapit oleh tanda petik dua (“…string…”)
Deklarasi Tipe String • Format : • char <nama_variabel>[exp] • char <nama_variabel>[ ]={inisial} • char *<nama_variabel> • Contoh : • char nama[ ]; • char *alamat; • Pemberian nilai inisial ke string dapat dilakukan dengan cara : • char nama[]=“Hanif”; atau • char nama[]={‘H’,’a’,’n’,’I’,’f’,’\0’};
String • Deklarasi char *nama menunjukkan bahwa string adalah pointer, atau dapat diakses dengan cara-cara yang sama dengan pointer atau array • Contoh program mengakses string dalam function :
Contoh Program /*Nama file : p_string.c */ #include <stdio.h> #include <string.h> void ubah_nama(char *nama) { nama=strcat(nama," Nasution"); } void main() { char *nm; clrscr(); printf("\nMasukkan nama anda :");gets(nm); ubah_nama(nm); printf("\nNama anda sekarang : %s",nm); getch(); }