SeptianAchmadRojabbi D4TIA Praktikum26&27
SeptianAchmadRojabbi D4TIA Praktikum26&27
Output
Alokasi memori
konstanta address Value
1000 S
U
N
\0
1001 M
O
N
\0
1002 T
U
E
S
\0
1003 W
E
D
\0
1004 T
H
U
\0
1005 F
R
I
\0
variable address Value
days 2000 1000
1001
1002
1003
1004
1005
a = 155;
b = &a;
c = &b;
printf("Nilai a = %d atau %d atau %d\n", a, *b, **c);
Output
Alokasi memori
Variable address value
A 0060FEFC 155
B 0060FEF8 0060FEFC
C 0060FEF4 0060FEF8
int *ptr1;
int **ptr2;
ptr1 = &var_x;
ptr2 = &ptr1;
127
Output
Alokasi memori
variable address Value
Var_x 0060FEFC 273
Ptr1 0060FEF8 0060FEFC
Ptr2 0060FEF4 0060FEF8
4. #include <stdio.h>
main(){
a = 1975;
b = &a;
c = &b;
}
Alokasi memori
variabel address Value
A 0060FEFC 1975
B 0060FEF8 0060FEFC
c 0060FEF4 0060FEF8
5. Untuk potongan program di bawah ini, gambarkan ilustrasi alokasi memori dari setiap
baris pernyataan yang diproses
int *i;
int **l;
i = m;
i++;
*i = j;
j = *i;
i = &j;
k = *(&j);
l = &i;
Alokasi memori
Variable Address Value
m[0] 0060FEEC 2
m[1] 0060FEF0 5 10
I 0060FEFC 0060FEEC 0060FEF0 0060FEF8
J 0060FEF8 10 10
K 0060FEF4 10
l 0060FEF8 0060FEFC
6. Tentukan setiap statemen di bawah ini benar atau salah. Jika salah sertakan alasannya.
Deklarasi :
int a[5] = {2,4,8,1,23};
int c = 5;
int *ptr2 = a;
main() {
int a = 3;
int b = 7;
naikkan_nilai(&a, &b);
*x = *x + 2;
*y = *y + 2;
Output
Alokasi memori
variable address value
a 00FF761 3
5
b 00CF452 7
9
x 00OU3 00FF761
5
y 00YT4 00CF452
9
2. Fungsi dengan keluaran berupa pointer yang menunjuk string.
#include <stdio.h>
main(){
int bl;
scanf("%d", &bl);
"Ngawur",
"Januari",
"Februari",
"Maret",
"April",
"Mei",
"Juni",
"Juli",
"Agustus",
"September",
"Oktober",
"November",
"Desember"
};
Output
Alokasi memori
variable address Value
b1 001 1 januari
002 2 februari
003 3 maret
004 4 april
005 5 mei
006 6 juni
007 7 juli
008 8 agustus
009 9 september
010 10 oktober
011 11 november
012 12 desember
Bulan[0] 013 Ngawur
Bulan[1] 014 Januari
Bulan[2] 015 Februari
Bulan[3] 016 Maret
Bulan[4] 017 April
Bulan[5] 018 Mei
Bulan[6] 019 Juni
Bulan[7] 020 Juli
Bulan[8] 021 Agustus
Bulan[9] 022 September
Bulan[10] 023 Oktober
Bulan[11] 024 November
Bulan[12] 025 desember
3. Berikan ilustrasi dan jelaskan apa yang dilakukan oleh program di bawah ini dan
tampilkan hasil eksekusinya.
#include <stdio.h>
char strB[80];
main(){
puts(strA);
pA = strA;
puts(pA);
pB = strB;
putchar('\n');
while(*pA != '\0')
*pB++ = *pA++;
*pB = '\0';
puts(strB);
Output
Alokasi memori
variable address value
strA 00GF981 A string to be used
demonstration
pA 00RE762 00GF81
pB 00AE903 00WE874
strB 00WE874 00GF981
Analisa
Ada string dengan indeks maksimum 80, string tersebut disebut strA yang
berisi karakter "String yang akan digunakan untuk demo". Selain itu, ada senar yang juga
memiliki indeks maksimum 80, bernama strB tetapi tidak mengandung nilai char. Setelah
Pergi ke fungsi utama, di mana pointer pA dideklarasikan dan pointer pB adalah
sebuah karakter. Setelah itu, strA dicetak, diketahui bahwa pA sama dengan strA,
kemudian cetak pA. pB memiliki nilai yang sama dengan strB, tetapi strB belum mengandung
karakter. bernilai
apa pun. Oleh karena itu, ada kondisi waktu. Dalam kondisi pA tidak sama dengan
null, lalu *pB++=*pA++. Dimana yang artinya sama dengan strB[0]=strA[0] dan seterusnya
sampai *pB nilainya nul. Kemudian cetak strB, dimana nilai strB sama dengan strA
main(){
char strB[80];
my_strcpy(strB, strA);
puts(strB);
char *p = destination;
*p++ = *source++;
*p = '\0';
return destination;
Output
Alokasi memori
variable address Value
strA 00JK641 A string to be used demonstration
destination 00CV643 00TV782
P 00KG894 00CV643
souce 00UI565 00JK641
strB 00TV782 00CV643
ANALISA
Dalam program tersebut terdapat sebuah fungsi yang bertipe char dan fungsi tersebut disebut
my_strcpy. Fungsinya adalah pointer ke strB dan strA. Di
diketahui bahwa fungsi utama memiliki string yang indeksnya paling banyak 80, dan string
tersebut disebut
strA di mana nilai char dari string adalah "String yang akan digunakan untuk demo"
dan ada strB yang juga diketahui max indexnya 80 tapi tidak diketahui
berharga. Kemudian fungsi my_strcpy dipanggil, di dalam fungsi proses dijalankan
menyatakan bahwa pointer p menunjuk ke nilai tujuan (di mana tujuan
menunjuk ke strB). Jadi ada syaratnya, jika sumbernya tidak sama dengan nol
(dimana sumber menunjuk ke nilai strA) maka indeks P a 0 sama dengan indeks sumber a
0, dan indeks terus meningkat hingga nilai p bernilai nol. Jadi yang dikembalikan adalah
Nilai dari destination sehingga di fungsi utama dicetak strB yaitu destination. Yang mana
hasilnya sama dengan strA
int i = 0;
dest[i] = source[i];
i++;
dest[i] = '\0';
return dest;
}
Alokasi memori
variable address value
strA 00FF871 A string to be used for
demonstration
strB 00FF342 00FF#$2
Dest[i] 00FF873 00FF565
Source[i] 00FF565 00FF873
i 00FF346 1 2 3 4 5 6 7 8 9 10 11 12 13
14 15 16 17 18 19 20 21 22
23 24 25 26 27 28 29 30 31
32 33 34 35 36 37
ANALISA
Dalam program ada fungsi my_strcpy dari tipe char dan mereka adalah penunjuk. Dengan string
target menunjuk ke string strB dan string sumber menunjuk ke strA. Pada fungsi utama, nilai
char dari strA diketahui berupa string yang akan digunakan untuk demonstrasi. Jadi nilai strB
tidak diketahui dan memanggil fungsi my_strcpy. Pada program ini fungsi my_strcpy berbeda
dengan program nomor 5, perbedaannya adalah fungsi ini menggunakan loop indeks tanpa
pointer ... jika angka 5 menggunakan kenaikan pointers Dalam fungsi ini prosesnya adalah
bahwa nilai awal i diketahui 0, jadi ada kondisi jika indeks sumber untuk I tidak sama dengan
nol, itu akan mengeksekusi indeks tujuan untuk I sama dengan dengan indeks sumber a i. lalu
saya tingkatkan. Proses akan terus berlanjut sampai dest indeks ke-i tidak sama dengan nol. Nilai
dest kemudian dikembalikan dan dimasukkan ke dalam Fungsi utamanya adalah strB. Oleh
karena itu yang tercetak adalah strB dan nilainya sama persis sebagai strA
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.