isi

21
BAB I PENDAHULUAN 1.1 DASAR TEORI Pointer adalah sebuah variabel yang menunjuk ke objek lain. Pointer juga bisa berarti sebuah variabel yang berisi nilai alamat suatu lokasi memory. Deklarasi penunjuk dilakukan dengan mendeskripsikan tanda * sebelum nama variabel. Didalam pointer terdapat 2 jenis operator yang biasa digunakan : a. Digunakan untuk menyimpan alamat dari suatu variabel, b. Digunakan untuk menyimpan alamat dari suatu fungsi. Contoh : Px adalah pointer dan x adalah variabel yang ditunjuk oleh px.Jika x berada pada alamat memory 1000, maka px akan berisi 1000. Mendeklarasikan variabel pointer Bentuk umum pendeklarasian variabel pointer adalah sebagai berikut : Type *nama_variabel; Keterangan : 1

Upload: rauzana-oja

Post on 29-Sep-2015

214 views

Category:

Documents


0 download

DESCRIPTION

belajar pointer

TRANSCRIPT

BAB I PENDAHULUAN

1.1 DASAR TEORIPointer adalah sebuah variabel yang menunjuk ke objek lain. Pointer juga bisa berarti sebuah variabel yang berisi nilai alamat suatu lokasi memory. Deklarasi penunjuk dilakukan dengan mendeskripsikan tanda * sebelum nama variabel.

Didalam pointer terdapat 2 jenis operator yang biasa digunakan :

a. Digunakan untuk menyimpan alamat dari suatu variabel,

b. Digunakan untuk menyimpan alamat dari suatu fungsi.

Contoh :

Px adalah pointer dan x adalah variabel yang ditunjuk oleh px.Jika x berada pada alamat memory 1000, maka px akan berisi 1000.

Mendeklarasikan variabel pointer

Bentuk umum pendeklarasian variabel pointer adalah sebagai berikut :

Type *nama_variabel;

Keterangan :

Type

: Sembarang type(mis : int,char),

Nama_variabel: Nama dari variabel pointer.

Berikut dipaparkan contoh dari pendeklarasian variabel pointer :

a. int *px;

b. char *pch1,*pch2;

Mengatur pointer agar menunjuk ke variabel lain

Untuk menyatakan alamat dari variabel,operator & (ampersand) yang ebrarti address of bisa digunakan dengan cara menempatkan operator tersebut didepan nama variabel. Contoh :

&x

: alamat dari variabel x

px=&x

: px diberi nilai berupa alamat dari variabel x

Contoh lainnya :

Tedy=&andy;

Ini artinya memberikan variabel tedy alamat dari variabel andy. Karena variabel andy diberi awalan & maka yang jadi pokok disini adalah alamat dalam memory bukan isi variabel. Misal andy di beri alamat 1776,kemudian ditulis instruksi berikut :

Andy=25;

Fredy=25;

Tedy=&andy;Maka, tedy = 1776,karena tedy sama dengan alamat dari variabel andy bukan nilai varibel andy.

Dengan menggunakan pointer, kita dapat mengakses nilai yang tersimpan secara langsung dan memberikan awalan tanda * yang berarti value pointed by.

Mengakses isi suatu variabel melalui pointer

Contoh :

*px: isi suatu variabel yang ditunjuk oleh pointer px.

Contoh soal :

int y,x=99;

int *px;

px=&x;

y=*px;

printf("Alamat x= %p\n", &x);

printf("Isi px= %p\n", px);

printf("Nilai yang ditunjuk oleh px = %d\n", *px);

printf("Nilai y= %d\n", y); Tipe variabel pointer dan tipe objek yang ditunjuk

Tipe variabel dan tipe objek yang akan ditunjuk oleh pointer haruslah sejenis.

Contoh :

Misalkan pointer pa bertipe int,maka data yang akan ditunjuk oleh pointer pa juga haruslah int. Akan terjadi kesalahan jika pointer float digunakan untuk menunjuk data bertipe int.

Mengubah isi variabel melalui pointer

Berikut merupakan contoh gambaran dari pengubahan isi suatu variabel :

pd di deklarasikan sebagai pointer ke suatu data bertipe float

d sebagai variabel bertipe float

selanjutnya d=50.5 digunakan untuk mengisikan nilai 50.5 secara langsung ke variabel d

selanjutnya pd=&d; digunakan untuk memberi alamat dari d ke pd. Oleh karena itu,pd menunjuk ke variabel d

maka *pd=pd+10; merupakan instruksi untuk mengubah nilai variabel d secara tak langsung. Dengan kata lain itu berarti jumlahkan yang ditunjuk pd dengan 10 kemudian berikan ke yang ditunjuk oleh pd.

Pointer dan ArrayBerikut merupakan gambaran hubungan antara pointer dan array. Misalkan di deklarasikan :

*int tgl_lahir [ ]={01,02,1950};

Dan int *ptgl;

Selanjutnya diberikan instruksi : ptgl=&tgl_lahir[0] yang berarti ptgl akan berisi alamat dari elemen array tgl_lahir yang berindeks 0.

Pointer dan string

Contoh soal :

char *pnama="RISKA";

printf("string yang ditunjuk oleh pnama=");

puts(pnama); Pointer menunjuk ke pointer

Contoh deklarasinya :

int var_x; //merupakan variabel bertipe iteger

int *ptr1; // variabel pointer yang menunjuk ke data bertipe integer

int **ptr2; // variabel pointer yang menunjuk ke pointer yang bertipe integer

Agar ptr1 menunjuk ke variabel x, perintahnya :

ptr1=&var_x;

Sedangkan agar ptr2 menuju ke ptr1,perintahnya :

prt2=&ptr1; Pointer dan Fungsi

Pointer dan kaitannya dengan fungsi terbagi atas 2 pembahasan yaitu :

Pointer sebagai parameter fungsi,

Pointer sebagai keluaran fungsi.

Pointer sebagai parameter Fungsi

Penerapan pointer sebagai parameter fungsi yaitu jika diinginkan agar nilai suatu variabel internal dapat diubah oleh fungsi yang dipanggil. Contoh :

Void naikkan_fungsi (int *a,int *b)

{

*a=*a+2;

*b=*b+2;

Keterangan :

Fungsi diatas dimaksudkan agar apabila dipanggil, variabel yang berhubungan dengan parameter dapat diubah nilainya,masing masing dinaikan 2. Contoh pemanggilan :

naikkan_nilai(&a,&b);

Keterangan :

Variabel a dan b haruslah dituliskan dengan di awali operator alamat (&) yang berarti menyatakan alamat variabel.

Pointer sebagai keluaran fungsi

Contoh berikut merupakan contoh suatu fungsi untuk menghasilkan keluaran berupa pointer yang menunjuk ke string nama bulan sebagai berikut :Char *nama_bulan (int n)

{

Char *bulan [ ]={kode salah,January,February,.};

Return((n12)? bulan [0] : bulan[12]);

}

Keterangan :

Keluaran fungsi nama_bulan [ ] adalah pointer yang menunjuk ke objek bertipe char. Mula mula array bernama bulan di deklarasikan agar dapat menunjuk ke sejumlah string yang menyatakan nama bulan.

Return((n12)? bulan [0] : bulan[12]);

Menyatakan hasil fungsi berupa pointer yang menunjuk ke stringkode salah,bulan [0] jika masukan berupa n12 dan bulan [n] untuk n yang terletak antara 1 sampai 12.Keunggulan menggunakan Pointer:

1. Penanganan terhadap array dan string akan lebih singkat, dan efisien.

2. Memungkinkan suatu fungsi untuk menghasilkan lebih dari satu nilai.

3. Memiliki kemampuan untuk mengirimkan alamat suatu fungsi ke fungsi yang lain.

4. Kemampuan berkerja dengan memori yang telah dialokasikan secara dinamik.

5. Memungkinkan untuk berhubungan langsung ke hardware.

6. Untuk menciptakan data structure yang kompleks.

7. Memungkinkan untuk berhubungan langsung dengan parameter command line.

Dengan menggunakan pointer yang benar, anda dapat menyusun sebuah program yang berkemampuan tinggi. Sebaliknya sedikit saja kesalahan dalam menggunakan pointer akan mengakibatkan kesalahan fatal pada program anda. Karena pointer dapat langsung menunjukan pada lokasi memori, jika lokasi yang ditunjuk salah, berarti data yang diambil juga akan salah, dan sudah tentu program anda akan menjadi salah juga.

1.2 TUJUAN PRAKTIKUM

1. Menjelaskan tentang konsep dari variabel pointer

2. Menjelaskan tentang pointer array

3. Menjelaskan tentang pointer string

4. Menjelaskan tentang pointer dalam fungsi

5. Menjelaskan tentang pointer sebagai parameter fungsi

6. Menjelaskan tentang pointer sebagai keluaran fungsi

7. Menjelaskan tentang pointer yang menunjuk pointer

1.3 ALAT DAN BAHAN PRAKTIKUM

Alat: Laptop

Bahan: - Software Dev C++, Software Turbo C.

BAB II

ISI

2.1 HASIL PRAKTIKUM

1. Pemakaian pointer

2. Tipe variabel pointer dan tipe objek yang ditunjuk

3. Mengubah isi variabel melalui pointer

*pd=*pd+90;

4. Mengubah isi variabel melalui pointer

*pz=*pz+*ps;

z=z+10;

z=z+10+s;

*ps=*ps+20;

*ps=*ps+10;

*pz=*pz+20+s;

5. Pointer dan array

6. Pointer dan aary (menggunakan for)

7. Pointer dan string

8. Pointer menunjuk ke pointer

9.Pointer sebagai parameter funngsi dengan kenaikan variabel masing masing 2.

10.Pointer sebagai keluaran fungsi dalam nama bulan

#include

char *nama_bulan(int n);main ()

{

int bl;

char *pch;

printf("Bulan (1...12) : ");

scanf("%d",&bl);

pch=nama_bulan(bl);

printf("Bulan ke-%d adalah bulan %s\n",bl,nama_bulan(bl));

}

char *nama_bulan(int n)

{

char *bulan[]={"kode salah","Januari","Februari","Maret","April","Mei","Juni","Juli","Agustus","September","Oktober","November","Desember"};

return((n12)? bulan[0]:bulan[n]);

}

11.Menampilkan angak 2,6,8 dengan perulangan serta penggunaan pointer dan array.#include

main()

{

int a,array_x[ ]={2,6,8};

int *pangka;

pangka=&array_x[0];

for(a=0;a