Nama : Anggia Dwi Putri Yulistin
NRP : 3123521028
Hasil Praktikum Konsep Pemrograman Pointer
Untuk setiap program di bawah ini,
– gambarkan ilustrasi alokasi memori dari setiap baris pernyataan yang diproses
– perkirakan hasil eksekusinya
1. main(){
int y, x = 87;
int *px;
px = &x;
\
y = *px;
printf("Alamat x = %p\n", &x);
printf("Isi px = %p\n", px);
printf("Isi x = %d\n", x);
printf("Nilai yang ditunjuk oleh px = %d\n", *px);
printf("Nilai y = %d\n", y);
Y
87
X 000000000062FE10
87
Px
000000000062FE10
perkiraan hasil eksekusi
Alamat x = 000000000062FE10
Isi px = 000000000062FE10
Isi x = 87
Nilai yang ditunjuk oleh px = 87
hasil output:
2. main(){
float *pu, nu;
double u = 1234.0;
pu = &u;
nu = *pu;
printf("Alamat dari u = %p\n", &u);
printf("Isi pu = %p\n", pu);
printf("Isi u = %lf\n", u);
printf("Nilai yang ditunjuk oleh pu = %f\n", *pu);
printf("Nilai nu = %f\n", nu);
}
U 1234.0
PU 0060FEF0
NU 0.0000
hasil perkiraan eksekusi
Alamat dari u = 0060FEF0
Isi pu = 0060FEF0
Isi u = 1234.0
Nilai yang ditunjuk oleh pu = 0.000000
Nilai nu = 0.000000
Hasil output:
3. main(){
float d = 54.5f, *pd;
printf("Isi d mula-mula = %g\n", d);
pd = &d;
*pd += 10;
printf("Isi d sekarang = %g\n", d);
}
D
54.5 64.5
Pd
Perkiraan hasil eksekusi:
Isi d mula-mula = 54.5
Isi d sekarang = 64.5
4. main(){
int z = 20, s = 30, *pz, *ps;
pz = &z;
ps = &s;
*pz += *ps;
printf("z = %d\n", z);
printf("s = %d\n", s);
Z 20 50
S 30
PZ
PS
hasil perkiraan eksekusi:
z = 50
s = 30
5. main(){
char c = 'Q', *cp = &c;
printf("%c %c\n", c, *cp);
c = '/';
printf("%c %c\n", c, *cp);
*cp = '(';
printf("%c %c\n", c, *cp);
}
D
‘Q’ ‘/’ ‘(’
Pd
Hasil perkiraan eksekusi:
QQ
//
((
6. main() {
int x = 1, y = 2, *ip;
ip = &x;
y = *ip;
*ip = 3;
printf(“x = %d, y = %d”, x, y);
}
X 1 3
Y 2 1
Ip
Perkiraan hasil eksekusi:
x = 3, y = 1
7. main(){
int i1, i2, *p1, *p2;
i1 = 9;
p1 = &i1;
i2 = *p1 / 2 – 2 * 3;
p2 = p1;
printf("i1=%d,i2=%d,*p1=%d,*p2=%d\n",i1,i2,*p1,*p2);
}
i1 9
i2 -2
P1
P2
Hasil perkiraan eksekusi:
i1=9,i2=-2,*p1=9,*p2=9
8. main() {
int count = 10, *temp, sum = 7;
temp = &count;
*temp = 32;
temp = ∑
*temp = count;
sum = *temp * 4;
printf("count=%d, *temp=%d, sum=%d\n", count,*temp, sum );
}
Count 10 32
Sum 7 32 128 Sum= *Temp*4
=32*4
Temp = 128
count=32, *temp=128, sum=128
9. main(){
int count = 13, sum = 9, *x, *y;
x = &count;
*x = 27;
y = x;
x = ∑
*x = count;
sum = *x / 2 * 3;
printf("count=%d, sum=%d, *x=%d, *y=%d\n", count,sum,*x,*y);
}
Count
13 27
Sum 9 27 39
Sum=*X/2*3
=27/2*3
X
=39
count=27, sum=39, *x=39, *y=27
10. int r, q = 7;
int go_crazy(int *, int *);
main() {
int *ptr1 = &q;
int *ptr2 = &q;
r = go_crazy(ptr1, ptr2);
printf("q=%d, r=%d, *ptr1=%d, *ptr2=%d\n",q,r,*ptr1,*ptr2);
ptr2 = &r;
go_crazy(ptr2, ptr1);
printf("q=%d, r=%d, *ptr1=%d, *ptr2=%d\n",q,r,*ptr1,*ptr2);
}
int go_crazy(int *p1, int *p2){
hasil perkiraan eksekusi
q=14, r=15, *ptr1=14, *ptr2=14
q=24, r=12, *ptr1=24, *ptr2=12