KONSEP PEMROGRAMAN
LAPORAN RESMI
POINTER 4
Oleh :
I Gede Raka Sadiantara
D3 Teknik Informatika A
2103191002
main() {
int a = 3;
int b = 7;
printf("SEMULA : a = %d b = %d\n", a, b);
naikkan_nilai(&a, &b);
printf("KINI : a = %d b = %d\n", a, b);
}
void naikkan_nilai(int *x, int *y){
*x = *x + 2;
*y = *y + 2;
}
Perkiraan Output
SEMULA : a = 3 b=7
KINI : a = 5 b=9
2. Listing Program
#include <stdio.h>
char *nama_bulan(int n);
main(){
int bl;
3. Listing Program
#include <stdio.h>
main(){
char *pA, *pB;
puts(strA);
pA = strA;
puts(pA);
pB = strB;
putchar('\n');
while(*pA != '\0')
*pB++ = *pA++;
*pB = '\0';
puts(strB);
}
Alamat Nilai
A string to be used for
strA 00GF981
demonstration
pA 00RE762 00GF81
pB 00AE903 00WE874
strB 00WE874 00GF981
Output
A string to be used for demonstration
A string to be used for demonstration
Analisa
Terdapat string yang berindex maximal 80,, string tersebut bernama strA yang
berisi char“A string to be used for demonstration”. Selain itu, Terdapat string yang juga
memiliki index max 80, bernama strB namun belum berisi nilai char apa-apa. Kemudian
masuk ke fungsi utama, dimana di deklarasikan pointer pA dan pointer pB merupakan
sebuah char. Setalahnya, dicetaklah strA, diketahui pA bernilai sama dengan strA,
kemudian cetak pA. pB nilainya sama dengan strB, namun strB belum berisi nilai char
apapun. Oleh karena itu terdapat kondisi while. Dalam kondisi pA tidak sama dengan
nul, maka *pB++=*pA++. Dimana yang artinya sama dengan strB[0]=strA[0] dan
seterusnya sampai *pB nilainya nul. Kemudian dicetak strB, dimana nilai strB sama
dengan strA
4. Listing Program
#include <stdio.h>
char *my_strcpy(char *, char *);
main(){
char strA[80]="A string to be used for demonstration";
char strB[80];
my_strcpy(strB, strA);
puts(strB);
}
char *my_strcpy(char *destination, char *source) {
char *p = destination;
while (*source != '\0')
*p++ = *source++;
*p = '\0';
return destination;
}
Alamat Nilai
strA 00JK641 A string to be used for demonstration
destination 00CV463 00TV782
p 00KG894 00CV463
source 00UI565 00JK641
strB 00TV782 00CV463
Perkiraan Output
Analisa
Pada program terdapat fungsi yang bertipe char dan fungsi tersebut bernama
my_strcpy. Fungsi tersebut merupakan pointer yang menunjuk ke strB serta strA. Dalam
fungsi main diketahui terdapat string yang indexnya max 80, dan string tersebut bernama
strA dimana nilai char dari string tersebut adalah “A string to be used for demonstration”
dan terdapat strB yang juga diketahui index max nya adalah 80 tetapi tidak diketahui
nilainya. Kemudian dipanggil fungsi my_strcpy, didalam fungsi tersebut berjalan proses
pendeklarasikan bahwa pointer p menunjuk nilai destination(dimana destination
menunjuk strB). Kemudian terdapat kondisi, apabila source tidak sama dengan nul
(dimana source menunjuk nilai strA) maka P indeks ke 0 sama dengan source indeks ke
0, dan indeks terus ditambah sampai nilai p adalah nul. Kemudian yang direturn adalah
nilai dari destination sehingga di fungsi utama dicetak strB yaitu destination. Yang mana
hasilnya sama dengan strA.
5. Listing Program
Alamat Nilai
strA 00FF871 A string to be used for demonstration
Output
strA = A string to be used for demonstration
strB = A string to be used for demonstration
Analisa
Pada program tersebut terdapat fungsi my_strcpy yang bertipe char dan
merupakan pointer. Dengan string dest menunjuk string strB, dan source menunjuk strA.
Pada fungsi utama telah diketahui nilai char dari strA adalah A string to be used for
demonstration. Kemudian nilai strB belum diketahui, dan memanggil fungsi my_strcpy.
Dalam program ini fungsi my_strcpy berbeda dengan program nomor 5, perbedaannya adalah
fungsi ini menggunakan looping indeks tanpa pointer.. jika nomor 5 menggunakan increament
pointer. Dalam fungsi ini prosesnya adalah nilai i awal diketahui 0, kemudian terdapat kondisi
jika source indeks ke I tidak sama dengan nul, maka akan dijalankan dest indeks ke i sama
dengan source indeks ke i. kemudian i di increament. Proses tersebut akan terus berjalan
sampai dest indeks ke i tidak sama dengan nul. Kemudian nilai dest di return dan masuk dalam
fungsi utama yaitu strB. Oleh karena itu yang dicetak adalah strB dan nilainya sama persis
seperti strA
6. Listing Program
#include <stdio.h>
#include <stdlib.h>
int rotasi(int *, int *, int *);
int main()
{
printf("Rotasi Program\n");
int a,b,c, hasil;
printf("Masukkan nilai 3 bilangan pisahkan dg spasi : ");
scanf("%d %d %d", &a, &b, &c);
printf("\nSebelum rotasi a=%d, b=%d, c=%d\n", a, b, c);
rotasi(&a,&b,&c);
printf("\nSetelah rotasi a=%d, b=%d, c=%d\n\n", a, b, c);
return 0;
}
int rotasi(int *x,int *y,int *z)
{
int temp;
temp=*x;
*x=*y;
*y=*z;
*z=temp;
}
Alamat Nilai
a 001 4 5
b 002 5 6
c 003 6 4
x 004 001 002
y 005 002 003
z 006 003 001
temp 007 001
Output
Analisa
Program diatas menggunakan pointer sebagai parameter dalam fungsi. Terlihat yang
dikirim pada parameter aktual di fungsi rotasi() adalah alamat dari masing-masing variabel.
Selanjutnya alamat dari parameter aktual tadi diterima pada parameter formal dengan
variabel pointer. Dengan begitu, di dalam fungsi dapat dilakukan perpindahan nilai variabel
dengan bantuan satu variabel penampung.
Kesimpulan
• Pointer dan kaitannya dengan fungsi yang akan dibahas berikut meliputi : Pointer
sebagai parameter fungsi dan Pointer sebagai keluaran fungsi.
• Penerapan pointer sebagai parameter yaitu jika diinginkan agar nilai suatu variabel
internal dapat diubah oleh fungsi yang dipanggil.
• Penerapan pointer sebagai sebagai keluaran fungsi misalnya, suatu fungsi
menghasilkan keluaran berupa pointer yang menunjuk ke string/array.