View
381
Download
8
Category
Preview:
Citation preview
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
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
Recommended