laporan resmi 24-27 konsep pemrograman [pointer]

22
8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer] http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 1/22 PRAKTIKUM 24 Pointer 1 A. Dasar Teori Konsep Dasar Pointer Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke obyek lain. Pada kenyataan yang sebenarnya, variabel pointer berisi alamat dari suatu obyek lain (yaitu obyek yang dikatakan ditunjuk oleh pointer). Sebagai contoh, px adalah variabel pointer dan x adalah variabel yang ditunjuk oleh px. Kalau x  berada pada alamat memori (alamat aal) !""", maka px akan berisi !""". Sebagaimana diilustrasikan pada #ambar $%.! disamping. Mendeklarasikan Variabel Pointer Suatu variabel pointer dideklarasikan dengan bentuk sebagai berikut & dengan tipe dapat berupa sembarang tipe yang sudah dibahas pada bab'bab sebelumnya, maupun  bab'bab berikutnya. dapun namavariabel adalah nama dari variabel pointer. Sebagai contoh & int *px; //contoh 1 char *pch1, *pch2; //contoh 2 *ontoh pertama menyatakan baha px adalah variabel pointer yang menunjuk ke suatu data  bertipe int, sedangkan contoh kedua masing pch! dan pch$ adalah variabel pointer yang menunjuk ke data bertipe char. Mengatur Pointer agar Menunjuk ke Variabel ain gar suatu pointer menunjuk ke variabel lain, mula'mula pointer harus diisi dengan alamat dari variabel yang akan ditunjuk. +ntuk menyatakan alamat dari suatu variabel, operator (operator alamat, bersi-at unary) bisa dipergunakan, dengan menempatkannya di depan nama variabel. Sebagai contoh, bila x dideklarasikan sebagai variabel bertipe int, maka &x erarti /alamat dari variabel x0. dapun contoh pemberian alamat x ke suatu variabel  pointer px (yang dideklarasikan sebagai pointer yang menunjuk ke data bertipe int) yaitu & px = &x; Pernyataan di atas berarti baha px diberi nilai berupa alamat dari variabel x. Setelah pernyataan tersebut dieksekusi barulah dikatakan baha px menunjuk ke variabel x. Mengakses Isi !uatu Variabel Melalui Pointer 1ika suatu variabel sudah ditunjuk oleh pointer, variabel yang ditunjuk oleh pointer tersebut dapat diakses melalui variabel itu sendiri (pengaksesan langsung) ataupun melalui pointer (pengaksesan tak langsung). Pengaksesan tak langsung dilakukan dengan menggunakan operator indirection (tak langsung) berupa simbol 2 (bersi-at unary). *ontoh penerapan operator 2 yaitu & *px 2110131036 |RENDRA BUDI HUTAMA Laporan Praktikum Konsep Pemrograman - Pointer 

Upload: rendra-budi-hutama

Post on 07-Aug-2018

367 views

Category:

Documents


8 download

TRANSCRIPT

Page 1: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 1/22

PRAKTIKUM 24Pointer 1

A. Dasar Teori

Konsep Dasar Pointer

Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke obyek lain. Pada kenyataan

yang sebenarnya, variabel pointer berisi alamat dari suatu obyek lain

(yaitu obyek yang dikatakan ditunjuk oleh pointer). Sebagai contoh, px

adalah variabel pointer dan x adalah variabel yang ditunjuk oleh px. Kalau x

 berada pada alamat memori (alamat aal) !""", maka px akan berisi !""".

Sebagaimana diilustrasikan pada #ambar $%.! disamping.

Mendeklarasikan Variabel Pointer

Suatu variabel pointer dideklarasikan dengan bentuk sebagai berikut &dengan tipe dapat berupa sembarang tipe yang sudah dibahas pada bab'bab sebelumnya, maupun

 bab'bab berikutnya. dapun namavariabel adalah nama dari variabel pointer.

Sebagai contoh &int *px; //contoh 1

char *pch1, *pch2; //contoh 2

*ontoh pertama menyatakan baha px adalah variabel pointer yang menunjuk ke suatu data

 bertipe int, sedangkan contoh kedua masing pch! dan pch$ adalah variabel pointer yang

menunjuk ke data bertipe char.

Mengatur Pointer agar Menunjuk ke Variabel ain

gar suatu pointer menunjuk ke variabel lain, mula'mula pointer harus diisi dengan alamat

dari variabel yang akan ditunjuk. +ntuk menyatakan alamat dari suatu variabel, operator

(operator alamat, bersi-at unary) bisa dipergunakan, dengan menempatkannya di depan nama

variabel. Sebagai contoh, bila x dideklarasikan sebagai variabel bertipe int, maka

&x

erarti /alamat dari variabel x0. dapun contoh pemberian alamat x ke suatu variabel

 pointer px (yang dideklarasikan sebagai pointer yang menunjuk ke data bertipe int) yaitu &

px = &x;

Pernyataan di atas berarti baha px diberi nilai berupa alamat dari variabel x. Setelah pernyataan

tersebut dieksekusi barulah dikatakan baha px menunjuk ke variabel x.

Mengakses Isi !uatu Variabel Melalui Pointer

1ika suatu variabel sudah ditunjuk oleh pointer, variabel yang ditunjuk oleh pointer tersebutdapat diakses melalui variabel itu sendiri (pengaksesan langsung) ataupun melalui pointer 

(pengaksesan tak langsung). Pengaksesan tak langsung dilakukan dengan menggunakan operator 

indirection (tak langsung) berupa simbol 2 (bersi-at unary).

*ontoh penerapan operator 2 yaitu &

*px

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 2: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 2/22

yang menyatakan /nilai3value yang ada pada alamat3address px0 . Sebagai contoh jika y bertipe

int, maka sesudah dua pernyataan berikut

px = &x;

y = *px;

y akan berisi nilai yang sama dengan nilai x.

Kedua pernyataan di atas sebenarnya dapat digantikan dengan sebuah pernyataan berupay = x;

Seandainya pada program di atas tidak terdapat pernyataan namun terdapat pernyataan maka y

tidaklah berisi nilai x, sebab px belum diatur agar menunjuk ke variabel x. 4al seperti ini

harap diperhatikan. Kalau program melibatkan pointer, dan pointer belum diinisialisasi, ada

kemungkinan akan terjadi masalah yang dinamakan /bug0 yang bisa mengakibatkan

komputer tidak dapat dikendalikan (hang).

Selain itu tipe variabel pointer dan tipe data yang

ditunjuk harus sejenis. ila tidak 

sejenis maka akan terjadi hasil yang tidak diinginkan.

+ntuk lebih jelasnya lihat gambar 

disamping

Mengakses dan Menguba" isi !uatu Variabel Pointer

*ontoh berikut memberikan gambaran tentang pengubahan isi suatu variabel secara tak 

langsung (yaitu melalui pointer). 5ula'mula pd dideklarasikan sebagai pointer yang menunjuk 

ke suatu data bertipe -loat dan d sebagai variabel bertipe -loat.

Selanjutnya

d = 54.5;

digunakan untuk mengisikan nilai 6%,6 secara langsung ke variabel d. dapun

pd = &d;

digunakan untuk memberikan alamat dari d ke pd. 7engan demikian pd menunjuk ke

variabel d. Sedangkan pernyataan berikutnya

*pd = *pd + 10; (atau: *pd += 10; )

merupakan instruksi untuk mengubah nilai variabel d secara tak langsung. Perintah di atas

 berarti /jumlahkan yang ditunjuk pd dengan !" kemudian berikan ke yang ditunjuk oleh pd0, atau

identik dengan pernyataan

d = d + 10;

kan tetapi, seandainya tidak ada instruksi

pd = &d;

maka pernyataan

*pd = *pd + 10;

tidaklah sama dengan

d = d + 10;

#. Per$obaan

!.main()

int y, x = !";

int *px;

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 3: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 3/22

px = &x;

y = *px;

print#($%amat x = 'pn$, &x);

print#($i px = 'pn$, px);

print#($i x = 'dn$, x);

print#($iai yan ditun-u oh px = 'dn$, *px);

print#($iai y = 'dn$, y);

$.

main()

#oat *pu, nu;

dou u = 124.0;

pu = &u;

nu = *pu;

print#($%amat dari u = 'pn$, &u);

print#($i pu = 'pn$, pu);

print#($i u = '#n$, u);

print#($iai yan ditun-u oh pu = '#n$, *pu);

print#($iai nu = '#n$, nu);

8.

main()

#oat d = 54.5#, *pd;

print#($i d mua3mua = 'n$, d);

pd = &d;

*pd += 10;

print#($i d aran = 'n$, d);

4.

main()

int = 20, = 0, *p, *p;

p = &;

p = &;

*p += *p;

print#($ = 'dn$, );

print#($ = 'dn$, );

5.

main()

char c = 6, *cp = &c;

print#($'c 'cn$, c, *cp);

c = /;

print#($'c 'cn$, c, *cp);

*cp = (;

print#($'c 'cn$, c, *cp);

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 4: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 4/22

7.

main()

int x = 1, y = 2, *ip;

ip = &x;

y = *ip;

*ip = ;

print#(8x = 'd, y = 'd9, x, y);

".

main()

int i1, i2, *p1, *p2;

i1 = ;

p1 = &i1;

i2 = *p1 / 2 2 * ;

p2 = p1;

print#($i1='d,i2='d,*p1='d,*p2='dn$,i1,i2,*p1,*p2);

!.

main()

int count = 10, *tmp, um = ";

tmp = &count;

*tmp = 2;

tmp = &um;

*tmp = count;

um = *tmp * 4;117

print#($count='d, *tmp='d, um='dn$, count,*tmp, um );

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 5: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 5/22

.

main()

int count = 1, um = , *x, *y;

x = &count;

*x = 2";

y = x;

x = &um;

*x = count;

um = *x / 2 * ;

print#($count='d, um='d, *x='d, *y='dn$, count,um,*x,*y);

10.

int r, < = ";

int ocray(int *, int *);

main()

int *ptr1 = &<;

int *ptr2 = &<;

r = ocray(ptr1, ptr2);

print#($<='d, r='d, *ptr1='d,*ptr2='dn$,<,r,*ptr1,*ptr2);

ptr2 = &r;

ocray(ptr2, ptr1);

print#($<='d, r='d, *ptr1='d, *ptr2='dn$,<,r,*ptr1,*ptr2);

int ocray(int *p1, int *p2)

int x = 5;

r = 12;

*p2 = *p1 * 2;

p1 = &x;

rturn *p1 * ;

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 6: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 6/22

%. Kesi&pulan

' Pointer adalah variabel yang berisikan alamat dari variable lain.

' Variabel pointer sering dikatakan sebagai variabel yang menunjuk ke obyek lain.

' +ntuk mendeklarasikan sebuah variabel pointer, hal yang perlu kita lakukan adalah

menambahkan tanda asterix 3 bintang sebelum nama variable yang kita buat. *ontohnya 2psaya

' Sedangkan untuk mengakses nilai yang ditunjuk oleh variable pointer tersebut, jugamenggunakan tanda bintang sebelum nama variabel.

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 7: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 7/22

PRAKTIKUM 2'Pointer 2

A. Dasar Teori

Pointer dan Arra( )pointer to arra(*

4ubungan antara pointer dan array pada * sangatlah erat. Sebab sesungguhnya array secara internal

akan diterjemahkan dalam bentuk pointer. Pembahasan berikut akan memberikan gambaran

hubungan antara pointer dan array. 5isalnya dideklarasikan di dalam suatu -ungsi

tatic int tahir>? = 01, 0, 74 ;

dan

int *pt;

Kemudian diberikan instruksi

pt = &tahir>0?; //pointr to array o# intr

maka ptgl akan berisi alamat dari elemen array tgllahir yang berindeks nol. 9nstruksi di atas bisa

 juga ditulis menjadi

pt = tahir;

sebab nama array tanpa tanda kurung menyatakan alamat aal dari array. Sesudah penugasan

seperti di atas,

*pt

dengan sendirinya menyatakan elemen pertama (berindeks sama dengan nol) dari array

tgllahir.

Pointer dan !tring )pointer to string**ontoh hubungan pointer dan string ditunjukkan pada program berikut.

//@roram : ptr4.c

Aincud Btdio.hC

main()

//pota mnun-u ontanta trin 8DEF%G%H9

char *pota = 8DEF%G%H9;

print#(8Dtrin yan ditun-u oh pota = 9);

put(pota); // print#(8'n9, pota);

*ontoh eksekusi &String yang ditunjuk oleh pkota : S;5<=#

Pada program di atas,

char *pota = 8DEF%G%H9;

akan menyebabkan kompiler ' mengalokasikan variabel pkota sebagai variabel pointer yang menunjuk ke obyek bertipe char dan

menempatkan konstanta /S;5<=#0 dalam suatu memori' kemudian pointer pkota akan menunjuk ke lokasi string /S;5<=#0.

Pernyataan di atas menyerupai pernyataan

char ota>? = 8DEF%G%H9;

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 8: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 8/22

tetapi sebenarnya kedua pernyataan inisialisasi di depan tidaklah tepat sama. Sebab pkota

adalah pointer (menyatakan alamat) yang dengan mudah dapat diatur agar menunjuk ke string

lain (bukan string /S;5<=#0), sedangkan kota adalah array (array menyatakan alamat

yang konstan, tak dapat diubah).

1adi, ada beberapa cara penulisan ekspresi variabel yang menghasilkan sebuah address

memory, di antaranya adalah &

1. Menuliskan a&persand di depan sebua" +ariabel ,nor&al,

5isalnya a dideklarasikan sebagai sebuah variabel normal, maka a akan menghasilkan adress

memory dari variabel a tersebut

2. Menuliskan na&a dari sebua" +ariabel pointer

5isalnya a dideklarasikan sebuah variabel sebagai int 2a, maka a akan berisi sebuah address

memory yang tersimpan pada variabel a (setelah ada sebuah address memory yang di 'assign ke

variabel a tersebut)

-. Menuliskan na&a sebua" +ariabel arra( tanpa inden(a.

5isalnya dideklarasikan' -loat nilai>6?, maka penulisan nilai artinya sama dengan nilai>"?

' int b>8?>%?, maka b>8? adalah sama dengan b>8?>"? dan b>"? adalah sama dengan b>"?>"?.

isa disimpulkan baha sebuah variabel array yang dituliskan tanpa kurung siku indexnya

adalah sama dengan address memory dari elemen pertama array tersebut

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 9: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 9/22

#. Per$obaan

!. 4ubungan antara pointer dan array. Suatu nama array yang ditulis tanpa dengan

indeksnya menunjukkan alamat elemen pertama dari array (versi !).

Aincud Btdio.hC

main()

tatic int tahir>? = 17, 4, 1"4;

int *pt;

pt = tahir;

print#($iai yan ditun-u oh pt = 'dn$, *pt);

print#($iai dari tahir>0? = 'dn$, tahir>0?);

$. 4ubungan antara pointer dan array. Suatu nama array yang ditulis tanpa dengan

indeksnya menunjukkan alamat elemen pertama dari array (versi $).

Aincud Btdio.hC

main()tatic int tahir>? = 17, 4, 1"4;

int *pt, i;

pt = tahir;

print#($iai yan ditun-u oh pt = 'dn$, *pt);

#or (i=0; iB; i++)

print#($iai dari tahir>i? = 'dn$, *(pt+i));

8. 4ubungan antara pointer dan array. Suatu nama array yang ditulis tanpa denganindeksnya menunjukkan alamat elemen pertama dari array (versi 8).

Aincud Btdio.hC

main()

tatic int tahir>? = 17, 4, 1"4;

int i;

int *pt;

pt = tahir;

print#($iai yan ditun-u oh pt = 'dn$, *pt);

#or (i=0; iB; i++)

print#($iai dari tahir>i? = 'dn$, *pt++);

nalisislah dan jelaskan perbedaan antara aplikasi pada nomor !, $ dan 8

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 10: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 10/22

%. 5enukarkan isi $ string tanpa pemakaian pointer.

Aincud Btdio.hC

Aincud Btrin.hC

Ad#in @%I%H 20

char nama1>@%I%H? = $%JF%K$;

char nama2>@%I%H? = $GLK%$;

main()

char namax>@%I%H?;

put($DEFMN% : $);

print#($nama1 33C 'n$, nama1);

print#($nama2 33C 'n$, nama2);

trcpy(namax, nama1);

trcpy(nama1, nama2);

trcpy(nama2, namax);

put($O : $);

print#($nama1 33C 'n$, nama1);

print#($nama2 33C 'n$, nama2);

6. 5enukarkan isi $ string dengan -asilitas pointer.

Aincud Btdio.hC

char *nama1 = $%JF%K$;

char *nama2 = $GLK%$;

main()

char *namax;

put($DEFMN% : $);

print#($nama1 33C 'n$, nama1);

print#($nama2 33C 'n$, nama2);

namax = nama1;

nama1 = nama2;

nama2 = namax;

put($O : $);

print#($nama1 33C 'n$, nama1);

print#($nama2 33C 'n$, nama2);

nalisislah dan jelaskan perbedaan antara aplikasi pada nomor % dengan nomor 6 

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 11: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 11/22

@. Penggunaan variable index pada array dan variable index pada pointer, untuk menunjuk

suatu nilai data di dalam suatu variable array. erikan analisis dan kesimpulan

main()

int niai>10?=!7,"5,!,77,57,"7,!0,5,"0,70;

int indx, *ip;

print#($Fncta mnunaan arrayn$);

print#($Ka#tar niai iPann$);

#or(indx=0; indxB10; indx++)

print#($'d$,niai>indx?);

put($n$);

print#($Fncta mnunaan pointr dan indxn$);

print#($Ka#tar niai iPann$);

#or(indx=0; indxB10; indx++)

print#($'d$,*(niai+indx));

put($n$);

print#($Fncta mnunaan pointrn$);

print#($Ka#tar niai iPann$);

ip=niai;

#or(indx=0; indxB10; indx++)

print#($'d$,*ip++);

A. erikan ilustrasi dan jelaskan apa yang dilakukan oleh potongan program di baah ini

main()

char *txtpointr = $Hood morninQ$;

#or( ; *txtpointr Q= 0; ++txtpointr)

print#($'c$, *txtpointr);

B. erikan ilustrasi dan jelaskan apa yang dilakukan oleh potongan program di baah ini

int array1>10?, array2>10?;

int *ip1, *ip2 = array2;

int *ahir = &array1>10?;

#or(ip1 = &array1>0?; ip1 B ahir; ip1++)

*ip2++ = *ip1;

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 12: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 12/22

C. 7e-inisikan sebuah -ungsi untuk membaca sebuah array (dengan tipe sembarang)

menggunakan pointer. uatlah program untuk membaca array tersebut dalam rangka

mencari sebuah nilai tertentu dan laporkan hasilnya berhasil menemukan atau tidak 

a. Disting Program

Aincud Btdio.hC

int cari(int arr>?,int);

main()

int arr>? = 0,1,2,,4,5,ydicari,h;

print#($n===============================$);

print#($n@roram @nc i %rray$);

print#($n===============================$);

print#($nnFauan ianan t= $);

can#($'d$,&ydicari);

h = cari(arr,ydicari);

i#(h)

print#($nRianan 'd ada pada array.$,ydicari);

print#($nRianan 'd tida ada pada array.$,ydicari);

int cari(int *iiarray, int ydicari)

int i,tmu = 0;

#or(i=0;iB7;i++)

i#(*iiarray == ydicari)

tmu = 1;

ra;

iiarray++;

rturn tmu;

 b. *apture Program

c. nalisis Program

Program pengecek nilai array diatas menggunakan variable pointer yaitu ketika di dalam -ungsi

kita perlu menunjuk nilai array yang dikirimkan. Sebelumnya pada parameter aktual, yang

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 13: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 13/22

dikirim hanyalah nama dari array tersebut tanpa kurung siku>? karena nama array tanpa kurung

siku sudah memiliki arti alamat indeks ke'" dari array tersebut. Selanjutnya pada -ungsi,

alamat tadi diterima di variable pointer untuk kemudian dicari apakah di dalam nilai yang

ditunjuk tadi secara bertahap ada nilai yang dicari atau tidak.

%. Kesi&pulan

' Suatu array bisa digunakan untuk menyimpan sejumlah pointer. Sebagai contoh&

char *namahari>10?;

merupakan pernyataan untuk mendeklarasikan array pointer.

' +ntuk mendapatkan alamat dari sebuah variable normal kita bisa menggunakan tanda

ampersand () sebelum nama variable tersebut. 5isalnya a dideklarasikan sebagai sebuah

variabel normal, maka a akan menghasilkan alamat memori dari variabel a tersebut

' Pada array dan string, apabila setelah nama variable tidak ada kurung siku >?, maka hal tersebut

 berarti sudah menunjukkan alamat elemen indeks ke'" dari array atau string tersebut.

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 14: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 14/22

PRAKTIKUM 2/Pointer -

A. Dasar Teori

Arra( dari Pointer )Arra( o0 Pointer*

Suatu array bisa digunakan untuk menyimpan sejumlah pointer. Sebagai contoh&

char *namahari>10?;

merupakan pernyataan untuk mendeklarasikan array pointer. rray namahari terdiri dari !"

elemen berupa pointer yang menunjuk ke data bertipe char. 9lustrasi penempatan dalam memori

untuk array o- pointer ini dapat dilihat pada gambar $@.! .

rray pointer bisa diinisialisasi seaktu pendeklarasian. Sebagai contoh&

tatic char *namahari>? =

8Dnin9,

8Daa9,

8Gau9,

8Oami9,

8Iumat9,

8Datu9,

8Finu9;

Pada contoh ini,

namahari>"? berisi alamat yang menunjuk ke string /Senin0.

namahari>!? berisi alamat yang menunjuk ke string /Selasa0.

namahari>$? berisi alamat yang menunjuk ke string /<abu0.

dan sebagainya.

Pointer &enunjuk Pointer )Pointer to Pointer*

Suatu pointer bisa saja menunjuk ke pointer lain. #ambar $@.$ memberikan contoh

mengenai pointer menunjuk pointer.

' +ntuk membentuk rantai pointer seperti pada gambar di atas, pendeklarasian yang

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 15: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 15/22

diperlukan berupa

int Sarx;

int *ptr1;

int **ptr2;

Perhatikan pada deklarasi di depan&

 Sarx adaah Saria rtip int.

 ptr1 adaah Saria pointr yan mnun-u data rtip int.

 ptr2 adaah Saria pointr yan mnun-u pointr int.

(itulah sebabnya deklarasinya berupa int 22ptr$E )

gar ptr! menunjuk ke variabel varx, perintah yang diperlukan berupa

ptr1 = &Sarx;

Sedangkan supaya ptr$ menunjuk ke ptr!, instruksi yang diperlukan adalah

ptr2 = &ptr1;

#. Per$obaan

+ntuk setiap program di baah ini, F gambarkan ilustrasi alokasi memori dari setiap baris pernyataan yang diproses

 F perkirakan hasil eksekusinya

!. rray o- Pointer to char main()

tatic char *day>? = $Dun$, $Fon$, $Tu$, $Ud$,$Thu$,

$Lri$, $Dat$;

int i;

#or( i = 0; i B 7; ++i )

print#( $'n$, day>i?);

$. Pointer yang menunjuk ke pointer yang lain.

main()

int a, *, **c;

a = 155;

= &a;

c = &;

print#($iai a = 'd atau 'd atau 'dn$, a, *, **c);

print#($ = 'p = aamat a di mmorin$, );

print#($c = 'p = aamat di mmorin$, c);

print#($aamat c di mmori = 'pn$, &c);

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 16: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 16/22

8. Pointer yang menunjuk ke pointer yang lain.main()

int Sarx = 2";

int *ptr1;

int **ptr2;

ptr1 = &Sarx;

ptr2 = &ptr1;

print#($iai Sarx = *ptr1 = 'dn$, *ptr1);

print#($iai Sarx = **ptr2 = 'dnn$, **ptr2);print#($ptr1 = &Sarx = 'pn$, ptr1);

print#($ptr2 = &ptr1 = 'pn$, ptr2);

print#($ &ptr2 = 'pn$, &ptr2);

4.

Aincud Btdio.hC

main()

int a, *, **c;

a = 1"5;

= &a;

c = &;

print#($iai a = 'd atau 'd atau 'dn$, a, *, **c);print#($ = 'p = aamat a di mmorin$, );

print#($c = 'p = aamat di mmorin$, c);

print#($aamat c di mmori = 'pn$, &c);

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 17: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 17/22

6. +ntuk potongan program di baah ini, gambarkan ilustrasi alokasi memori dari setiap baris pernyataan yang diproses

int *i;

int -=10, , m>?=2, 5;

int **;

i = m;

i++;

*i = -;- = *i;

i = &-;

= *(&-);

= &i;

@. Gentukan setiap statemen di baah ini benar atau salah. 1ika salah sertakan alasannya.

7eklarasi &

int a>5? = 2,4,!,1,2;

int c = 5;

int *ptr1 = &c;int *ptr2 = a;

1aab & di kertas baliknya

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 18: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 18/22

PRAKTIKUM 2Pointer 4

A. Dasar Teori

Pointer dala& ungsi

Pointer dan kaitannya dengan -ungsi yang akan dibahas berikut meliputi &

!. Pointer sebagai parameter -ungsi$. Pointer sebagai keluaran -ungsi

Pointer !ebagai Para&eter ungsi

Penerapan pointer sebagai parameter yaitu jika diinginkan agar nilai suatu variabelinternal dapat diubah oleh -ungsi yang dipanggil.

Sebagai contoh dapat dilihat pada -ungsi berikut.

Soid naianniai (int *x, int *y)

*x = *x + 2;

*y = *y + 2;

Hungsi di atas dimaksudkan agar kalau dipanggil, variabel yang berkenaan dengan

 parameter aktual dapat diubah nilainya, masing'masing dinaikkan sebesar $. *ontoh pemanggilan &

naianniai(&a, &);

Perhatikan, dalam hal ini variabel a dan b harus ditulis diaali operator alamat ()

yang berarti menyatakan alamat variabel, sebab parameter -ungsi dalam pende-inis ian berupa pointer.

Pointer !ebagai Keluaran ungsi )return +alue*

Suatu -ungsi dapat dibuat agar keluarannya berupa pointer. 5isalnya, suatu -ungsi

menghasilkan keluaran berupa pointer yang menunjuk ke string namabulan, seperti pada contoh.

char *namauan(int n)

tatic char *uan>?=

8Ood uan aah9, 8Ianuari9, 8Lruari9, Fart9, 8%pri9, 8Fi9, 8Iuni9,

8Iui9, $%utu9, 8Dptmr9, 8Vtor9, 8opmr9,8Kmr9;

rturn ( (nB1 W W nC12) X uan>0? : uan>n? );

' Pada de-inisi -ungsi di atas,

char *namauan()

menyatakan baha keluaran -ungsi namabulan() berupa pointer yang menunjuk ke obyek char 

(atau string).

' 7alam -ungsi namabulan(), mula'mula array bernama bulan dideklarasikan dan sekaligus

diinisialisasi agar menunjuk sejumlah string yang menyatakan nama bulan. 7i bagian akhir 

-ungsi, pernyataan

rturn ( (nB1 WW nC12) X uan>0? : uan>n? );

menyatakan baha hasil -ungsi berupa pointer yang menunjuk ke string “Kode bulan salah”(bulan[0]) jika masukan fungsi n<1 atau n>1 bulan[n] untuk n !ang terletak antara 1

sam"ai dengan 1#

#. Per$obaan+ntuk setiap program di baah ini,

 F gambarkan ilustrasi alokasi memori dari setiap baris pernyataan yang diproses F perkirakan hasil eksekusinya

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 19: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 19/22

!. Hungsi dengan argumen berupa pointer.

Aincud Btdio.hC

Soid naianniai(int *x, int *y);

main()

int a = ;

int = ";

print#($DEFMN% : a = 'd = 'dn$, a, );

naianniai(&a, &);

print#($O : a = 'd = 'dn$, a, );

void naikkannilai(int 2x, int 2y)I

2x : 2x J $E

2y : 2y J $E

$. Hungsi dengan keluaran berupa pointer yang menunjuk string.

Aincud Btdio.hC

char *namauan(int n);

main()

int ;

print#($Ruan 1..12 : $);

can#($'d$, &);

print#($Ruan 3'd adaah 'n$, , namauan());

char *namauan(int n)tatic char *uan>? =

$aPur$,

$Ianuari$,

$Lruari$,

$Fart$,

$%pri$,

$Fi$,

$Iuni$,

$Iui$,

$%utu$,

$Dptmr$,

$Vtor$,

$oSmr$,$Kmr$

;

rturn ((nB1WWnC12) X uan>0? : uan>n?);

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 20: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 20/22

8. erikan ilustrasi dan jelaskan apa yang dilakukan oleh program di baah ini dantampilkan hasil eksekusinya.

Aincud Btdio.hC

char tr%>!0? = $% trin to ud #or dmontration$;

char trR>!0?;

main()

char *p%, *pR;

put(tr%);

p% = tr%;

put(p%);

pR = trR;

putchar(n);

 Phi(*p% Q= 0)

*pR++ = *p%++;

*pR = 0;

put(trR);

Proses apakah yang sebenarnya dilakukan pada program tersebut L

%. erikan ilustrasi dan jelaskan apa yang dilakukan oleh program di baah ini

Aincud Btdio.hC

char *mytrcpy(char *, char *);

main()

char tr%>!0?=$% trin to ud #or dmontration$;

char trR>!0?;

mytrcpy(trR, tr%);

put(trR);

char *mytrcpy(char *dtination, char *ourc)

char *p = dtination;

 Phi (*ourc Q= 0)

*p++ = *ourc++;

1

*p = 0;

rturn dtination;

6. andingkan -ungsi mystrcpy() di atas dengan -ungsi mystrcpy() di baah ini. erikan

 penjelasan terhadap perbedaan proses dari kedua -ungsi tersebut

char *mytrcpy(char dt>?, char ourc>?)

int i = 0;

 Phi (ourc>i? Q= 0)

dt>i? = ourc>i?;

i++;

dt>i? = 0;

rturn dt;

@. uatlah sebuah program dengan mende-inisikan sebuah -ungsi rotasi() yang menerima tiga

 parameter berupa variabel a, b, dan c. Hungsi ini melakukan rotasi sehingga nilai a berpindah

ke b, b ke c dan nilai c ke a sekembalinya ke -ungsi main().

a. Disting ProgramAincud Btdio.hC

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 21: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 21/22

Soid rotai(int *,int *,int *);

main()

int a,,c;

print#($====================================nn$);

print#($@G%OTOMF 27 3 Frotai iai Yaria$);

print#($n====================================nn$);

print#($Fauan i % t = $);

can#($'d$,&a);

##uh(tdin);

print#($Fauan i R t = $);

can#($'d$,&);

##uh(tdin);

print#($Fauan i Z t = $);

can#($'d$,&c);

##uh(tdin);

print#($nniai um dirotai : % = 'd, R = 'd, Z = 'd $,a,,c);

rotai(&a,&,&c);

print#($nniai tah dirotai : % = 'd, R = 'd, Z = 'd $,a,,c);

Soid rotai(int *x,int *y,int *)

int tmp;

tmp = *x;

*x = *y;

*y = *;

* = tmp;

 b. *apture Program

c. nalisis Program

Program diatas menggunakan pointer sebagai parameter dalam -ungsi. Gerlihat yang dikirim

 pada parameter aktual di -ungsi rotasi() adalah alamat dari masing'masing variabel. Selanjutnya

alamat dari parameter aktual tadi diterima pada parameter -ormal dengan variabel pointer.7engan begitu, di dalam -ungsi dapat dilakukan perpindahan nilai variabel dengan bantuan satu

variabel penampung.

%. Kesi&pulan

2110131036 |RENDRA BUDI HUTAMA

Laporan Praktikum Konsep Pemrograman - Pointer 

Page 22: Laporan Resmi 24-27  Konsep Pemrograman [Pointer]

8/20/2019 Laporan Resmi 24-27 Konsep Pemrograman [Pointer]

http://slidepdf.com/reader/full/laporan-resmi-24-27-konsep-pemrograman-pointer 22/22

' Pointer dan kaitannya dengan -ungsi yang akan dibahas berikut meliputi & Pointer sebagai

 parameter -ungsi dan Pointer sebagai keluaran -ungsi.

' Penerapan pointer sebagai parameter yaitu jika diinginkan agar nilai suatu variabel

internal dapat diubah oleh -ungsi yang dipanggil.

' Penerapan pointer sebagai sebagai keluaran -ungsi misalnya, suatu -ungsi menghasilkan

keluaran berupa pointer yang menunjuk ke string3array.

2110131036 |RENDRA BUDI HUTAMA