Anda di halaman 1dari 14

Bab

18
18.1 Pengertian Pointer.
Dilihat dari fungsinya, pointer dapat diartikan sebagai suatu nilai yang menunjuk atau
menyatakan alamat suatu lokasi memori. Dilihat dari fisiknya, Pointer adalah sebuah
variabel yang berisi alamat suatu lokasi memori. Lokasi memori tersebut mungkin
diwakili oleh sebuah variabel yang mempunyai nama, atau mungkin juga lokasi bebas
dalam memori. Sedangkan pointer sendiri yang berupa sebuah nilai ditampung dalam
sebuah variabel yang disebut variabel pointer. Jadi variabel pointer berisi suatu nilai yang
menyatakan alamat suatu lokasi.
Untuk selanjutnya variebel pointer hanya disebut pointer.
Untuk memahami penggunaan pointer, lebih mudah bila dipelajari melalui contoh-
contoh yang diberikan pada SubBab 18.2 berikut ini .

18.2 Contoh Penggunaan Pointer pada C/C++.


(Catatan : Java tidak mendukung penggunaan Pointer)
Tapi mempunyai cara lain yang sebenarnya identik dengan Pointer.

18.2.1 Pointer menunjuk alamat variabel tunggal.


Contoh-01 Pointer menunjuk alamat sebuah variabel.
Pada kedua program ini, ilustrasi
C C++
kedua buah variabel
digambarkan sebagai berikut :
dapat

int A = 25; (1) int A = 25;


int *P; (2) int *P; 25 21E0
P = &A; (3) P = &A;
A P
printf(“%i”, *P); cout << *P;
(4)
Tercetak : 25 Tercetak : 25 H21E0 Misal alamat variabel A
adalah H21E0 ( H = Hexa)

Penjelasan:
(1) Instruksi : int A = 25; (2) Instruksi : int *P;
Mmenyiapkan variabel A ilustrasi 25 menyiapkan variabel P
dengan tipe int, dengan tipe ilustrasi
dan isinya dibuat = 25 A Pointer to integer
P
(biasa ditulis :“ int* “ )
H21E0 Isinya ada, tapi
Misal alamat variabel A tidak diketahui
adalah H21E0 ( H = Hexa)

Asalnya : 389 403


(3) Instruksi : P = &A; P

Mengisi Pointer P dengan alamat variabel A 25 21E0


Disebut Pointer P menunjuk variavel A
Bila alamat variabel A = H21E0, maka isi 25
A P
Pointer P atau nilai Pointer P = H21E0
A
H21E0 Ilustrasi Pointer P
(4) Dengan printf(“%d”, *P); menunjuk variabel A

Maksudnya mencetak isi variabel yang alamatnya


ditunjuk opeh pointer P. Sedangkan variabel yang
alamatnya sedang ditunjuk oleh pointer P adalah variabel
*P Maksudnya variabel
A. Jadi yang dicetak adalah isi varibel A sehingga yang ditunjuk oleh
tercetak : 25 pointer P

Program ini error


Perhatikan : int *P; Pointer P disiapkan untuk menunjuk
float A; variabel yang bertipe int.
P = &A; Bila diminta menunjuk variabel bukan
tipe int maka akan terjadi ERROR

Contoh-02. Mencetak isi Pointer P sebagai alamat variabel A.

C C++
int A=25; int A=25; 21E0
25
int *P; int *P;
P = &A; P = &A;
A P
printf(“%p”, P); cout << P;
21E0
Tercetak : 21E0 Tercetak : 21E0
yaitu alamat yaitu alamat Catatan : 21E0 adalah isi variabel
variabel A variabel A Pointer P yang
dinyatakan dengan nilai
Hexa-decimal.
Catatan : Alamat variabel A dapat juga dicetak dengan
instruksi :
printf(“%X”, &A); pada C,
atau cout << &A; pada C++.

Contoh-03. Mencetak isi Pointer P sebagai alamat variabel A dalam bentuk decimal.
C
Hexa : 2 1 E 0 Bila dikonversikan ke Decimal
int A=25;
int *P; 0 * 0 = 0
P = &A; Dicetak 14 * 16 = 224
printf(“%i”, P); dengan format 1 * 256 = 256
integer ( %i ) 2 * 4096 = 8192
Tercetak : 8672
yaitu isi variabel P (alamat variabel A) Nilai Decimal : Total : 8672
dicetak dalam bentuk decimal

404
Contoh-04. Mengisi variabel dengan nilai yang ditunjuk oleh sebuah Pointer.
C / C++ P

int *P; Akan sama hasilnya


int A, B; 25 25 dengan instruksi : B = A;
A = 25; karena *P adalah A.
P = &A; A B atau yang ditunjuk oleh P
B = *P adalah A.
P tetap menunjuk A
bukan menunjuk B.
Instruksi : B = *P ;
pada program diatas, sama
maksudnya dengan: B = A;
Catatan :
Instruksi B = P;
akan menyebabkan error, karena B bertipe integer,
dan P bertipe pointer int. dan tercetak pesan : Cannot convert ‘int *’ to int .

Contoh-05. Sebuah alamat dapat ditunjuk oleh lebih dari satu pointer.

Q
(1) int A = 25, B = 12; P
(2) int *P, *Q;
(3) P = &A;
(4) Q = P; 25 12
(5) printf(“%i\n”, *P);
A B
(6) printf(“%i\n”, *Q);
Pointer P dan Q
Tercetak : 25 keduanya menunjuk variabel A
25
Keduanya mencetak isi variabel A

Contoh-06. Mengoperasikan isi variabel dengan menyebut alamatnya dengan pointer.


P Q
int A = 25, B = 12; (1)
int *P, *Q; (2) 3)
25 12
P = &A; Q = &B; (3)
*Q = *P; (4) A B
printf(“%i\n”, A); (5) P Q
printf(“%i\n”, B); (6)
4)
25 25
Tercetak : 25
A B
25
Untuk program diatas, instruksi : *Q = *P
sama maksudnya dengan instruksi : B = A;

405
Contoh-07. Mengisi variabel yang ditunjuk oleh sebuah Pointer.
P
int A, *P; (1)
P = &A; (2) 2)
*P = 25; (3)
printf(“%i”, A); (4) P A

Tercetak : 25
3)
Untuk program diatas, instruksi : *P = 25; 25
sama maksudnya dengan instruksi : A = 25;
A
Contoh-08. Sebuah pointer dapat menyimpan alamat Pointer lain.

int A, *P, **Q; 25 21EC 227F


Pointer Q
A = 25; dapat
A P Q
digunakan
P = &A; untuk
menunjuk
Q = &P;// Q mencatat alamat P pointer lain
H21EC H227F
printf(“\n%i”, *P ); Q
printf(“\n%i”, **Q ); menunjuk P
Q menunjuk P, dan P
Tercetak : 25 P menunjuk A menunjuk A
Q = &A;
25
Error
**Q artinya variabel yang ditunjuk oleh sebuah
pointer lain, dimana pointer lain tersebut
ditunjuk oleh pointer Q. Untuk contoh diatas
**Q adalah variabel A.

Contoh-09. Sebuah pointer dapat menunjuk sebuah lokasi memory secara dinamis.
( secara dinamis maksudnya dapat dibuat dan dapat dihapus pada saat program
sedang berjalan )
C C++
int *P; int *P; 14FA 25
P = (int *)malloc(sizeof(int)); P = new int;
P
*P = 25; *P = 25;
printf(“%i”, *P ); cout << *P; H14FA
Pointer P,
Tercetak : 25 Tercetak : 25
menunjuk suatu
area dalam
malloc adalah instruksi untuk memory allocation memory (heap
memory). Area
P = (int *)malloc(sizeof(int)); pada Bahasa C tersebut tidak diberi
atau nama.
P = new int; pada Bahasa C++,
maksudnya menyiapkan suatu area bertipe int yang ditunjuk oleh Pointer P
Area tersebut tidak diberi nama, dan dapat dihapus dengan free()
pada C atau delete() pada C++

406
18.2.2 Pointer menunjuk alamat elemen array satu dimensi
Contoh-01. Pointer menunjuk alamat elemen array.

(1) int A[5] = {25,12,17,10,15}; P = A;


int *P; sama dengan :
(2)
(3) P = A; P = &A[0];
(4) printf(“%d\n”, *P );
Ilustrasi pointer P menunjuk elemen
Tercetak : 25 pertama array A digambarkan
sebagai berikut :
(3) P = A; maksudnya Pointer P menyimpan alamat array A.
Untuk sebuah array, alamatnya diwakili oleh
alamat elemen pertama, untuk contoh diatas yaitu 0 1 2 3 4
A[0] ) A 25 12 17 10 15
Perhatikan : P = A; bukan P = &A;
karena dalam bahasa C, bila menyebut nama P
array satu dimensi berarti menyebut atau menunjuk
elemen pertama, dalam contoh diatas adalah A[0].
Iliustrasi elemen yang ditunjuk ole P.
Sehingga : P = A; dengan :
P = &A[3] ;
dapat ditulis menjadi : P = &A[0]; atau P = A + 3;
dan kalau ingin menunjuk langsung ke A[3]
0 1 2 3 4
dapat ditulis dengan : P = &A[3]
A 25 12 17 10 15
atau: P = A + 3

Contoh-02. Meggerakkan Pointer yang menunjuk array

Nilai sebuah pointer dapat dikenai operasi arithmetic seperti ditambah atau dikurang.

(1) int A[5] = {25,12,17,10,15}; 3) dengan P = A; P menunjuk A[0]


(2) int *P; 0 1 2 3 4
(3) P = A; A 25 12 17 10 15
(4) printf(“%d\n”, *P );
(5) P++:
(6) printf(“%d\n”, *P ); P
Akan tercetak : 25
5) dengan P++; P menunjuk A[1]
12
0 1 2 3 4
A 25 12 17 10 15
Dengan P++, atau P+=1, atau P=P+1;
maka pointer P maju satu ‘langkah’. Satu
langkah bisa 1 Byte, 2 Byte, 4 Byte atau 8 Byte
tergantung tipe dari pointer, char, int, float P
atau double.

407
Contoh-03. Memajukan atau memundurkan pointer dapat dilakukan sekaligus
dalam instruksi printf( ). Perhatikan contoh berikut ini.

Sudah ada array yang dibuat dengan int A[5]. 0 1 2 3 4


Sudah ada isinya, dan pointer P sedang menunjuk A 25 12 17 10 15
elemen A[2] dengan ilustrasi berikut ini :
P

1. Bila P sedang menunjuk A[2]


Dengan : printf(“%i”, *P );
Tercetak : 17 0 1 2 3 4
A 25 12 17 10 15
Mencetak isi elemen yang sedang ditunjuk oleh P,
sehingga tercetak : 17 (isi A[2])
Pointer P tetap menunjuk A[2] sebagai berikut: P

2. Dengan : printf(“%i”, *P++ );


Mencetak isi elemen yang sedang ditunjuk oleh
P, sehingga tercetak : 17 (isi A[2]).
Setelah itu Pointer P bergerak kekanan satu
Tercetak : 17
(1) elemen sehingga menunjuk A[3] sebagai
berikut:
Instruksi diatas sebenarnya dua 0 1 2 3 4
instruksi:
printf(“%i”, *P); A 25 12 17 10 15
P++;
yang digabung jadi satu.
P

Pointer P bergerak dulu satu elemen ke


3. Dengan : printf(“%i”, *++P ); kanan, ke A[3], kemudian mencetak isi
A[3], sehingga tercetak : 10.
Tercetak : 10
Ilustrasi sebagai berikut :
Instruksi diatas sebenarnya dua 0 1 2 3 4
instruksi:
P++; A 25 12 17 10 15
printf(“%i”, *P);
yang digabung jadi satu.
P

0 1 2 3 4
4. Dengan : printf(“%i”, ++*P ); A 25 12 17 10 15
Tercetak : 18
P
Instruksi diatas sebenarnya dua Elemen yang ditunjuk oleh Pointer P, isinya
instruksi: ditambah 1 lebih dulu. Kemudian baru
++*P; dicetak.
printf(“%i”, *P); 0 1 2 3 4
yang digabung jadi satu. A 25 12 18 10 15
Sama juga dengan : A[2]++;
printf(“%i”, A[2] ); P

408
5. 0 1 2 3 4
Dengan : printf(“%i”,++*P++ );
A 25 12 17 10 15
Tercetak : 18
P
Instruksi diatas sebenarnya tiga Elemen yang ditunjuk oleh Pointer P, isinya
instruksi: ditambah 1 lebih dulu. Kemudian baru dicetak.
Setelah mencetak Pointer P bergerak satu
++*P langkah ke kanan
printf(“%d”, *P);
P++; 0 1 2 3 4

digabung jadi satu A 25 12 18 10 15

6. printf(“%i”, *++P++ ); Akan menyebabkan ERROR

Contoh Program untuk Contoh-03


Contoh-03a. Mencetak isi array P=A

int I,*P,A[5] = {25,12,17,10,15};


I=1
P = A;
for(I=1; I <= 5; I++ )
{ printf(“%i\n”, *P); I++
P++;
} P++
Tercetak : 25
12 printf *P
17
10 I<=5
15 true

I digunakan untuk mengatur loop 5 kali false


*P yang menunjuk data yang akan dicetak

Program diatas dapat ditulis menjadi :


int I,*P,A[5] = {25,12,17,10,15};
0 1 2 3 4
P = A;
for(I=1; I <= 5; I++ ) A 25 12 17 10 15
printf(“%i\n”, *P++);
P
Perhatikan : Terakhir
Keluar dari loop, keadaan terakhir, pointer P P menunjuk
diluar area
menunjuk diluar array. Bila ada instruksi mencetak
isi yang ditunjuk oleh pointer P, maka akan
tercetak sembarang, tidak error.

409
Contoh-03b Mencetak isi array
P=A

int I,*P,A[5] = {25,12,17,10,15};


I=0
P = A;
for(I=1; I <= 4; I++ )
printf(“%i\n”, *++P); I++

Tercetak : 12 printf
17 *P
10
P++
15

I digunakan untuk mengatur loop 4 kali I<=4


true
*P yang menunjuk data yang akan dicetak

*++P P maju dulu satu langkah false


kemudian baru mencetak isi 0 1 2 3 4
elemen yang ditunjuk oleh P
A 25 12 17 10 15
Terakhir pointer P menunjuk A[4]

P
Contoh-04 Mengisi array satu dimensi
Susun program (penggalan program) untuk menyiapkan array satu dimensi
tipe integer sebanyak 5 elemen dengan nama A, kemudian mengisi array
tersebut sehingga isinya menjadi sebagai berikut :
0 1 2 3 4
A 1 2 3 4 5 P=A

N=1
int I,*P, N, A[5];
P = A; N = 1; I=1
for(I=1; I <= 5; I++ )
{ *P = N;
I++
P++;
N++;
P++
}

Instruksi : for(I=1; I<=5; I++) *P=N


dapat saja diganti dengan : for(I=0; I<=4; I++)
I<=5
atau for(I=11; I<=15;I++) dan sebagainya, true
asalkan membuat loop berputar sebanyak 5 kali, karena
nilai I tidak mempengaruhi nomor elemen array yang false
akan diisi. Posisi elemen array yang diisi tergantung dari
yang ditunjuk oleh pointer P.

410
18.2.3 Pointer menunjuk alamat elemen array dua dimensi
Contoh-01. Mencetak isi array dua dimensi
Contoh-01-a
(1) Dengan instruksi no (1) terbentuk
#include <stdio.h>
sebuah array dua dimensi A[3][5]
void main()
yang biasa diilustrasikan dengan
(1) { char A[3][5] = { “ABCDE”,
gambar sebagai berikut :
“FGHIJ”,
“KLMNO” }; 0 1 2 3 4
(2) char *P;
0 A B C D E
(3) P = &A[0][0];
(4) printf(“\n%c”, *P ); 1 F G H I J
} 2 K L M N O
Tercetak : A
Sebenarnya oleh Bahasa C, array diatas, strukturnya dalam memory dibuat tersusun
dengan ilustrasi sebagai berikut :

0,0 0,1 0,2 0,3 0,4 1,0 1,1 1,2 1,3 1,4 2,0 2,1 2,2 2,3 2,4
A B C D E F G H I J K L M N O
baris-0 baris-1 baris-2
0,0 maksudnya mewakili A[0][0]

Tersusun sedemikian rupa sehingga secara fisik alamat A[1][0] merupakan


sambungan dari alamat A[0][4] dan alamat A[2][0] merupakan sambungan
alamat A[1][4]
(3) Dengan P = &A[0][0],
maka pointer P menunjuk elemen pertama dari array yang dapat diiulstrasikan
sebagai berikut :

0,0 0,1 0,2 0,3 0,4 1,0 1,1 1,2 1,3 1,4 2,0 2,1 2,2 2,3 2,4
A B C D E F G H I J K L M N O

P Sebagai padanan dari P = A;


pada array satu dimensi,
Perhatikan instruksi : P = &A[0][0]; karena array dua dimensi
3x5 dianggap sebagai
Dapat juga digunakan instruksi : P = A[0]; kumpulan array satu
dimensi, A[0], A[1], dan A[2],
Tapi akan terjadi error masing-masing 5 elemen.
bila digunakan instruksi : P = A; Dengan P =A[1], maka
seperti yang digunakan pointer P akan langsung
pada array satu dimensi menunjuk awal dari baris
kedua yaitu A[1][0]
(4) Dengan printf(“\n%c”, *P ) ;
akan tercetak isi elemen yang sedang ditunujuk oleh pointer P yaitu A[0][0],
sehingga tercetak karakter ‘A’.

411
Contoh-01b Contoh-01c
#include <stdio.h> #include <stdio.h>
void main() void main()
{ char A[3][5] = { “ABCDE”, { char A[3][5] = { “ABCDE”,
“FGHIJ”, “FGHIJ”,
“KLMNO” }; “KLMNO” };
char *P; char *P;
int I; int I, J;
P = &A[0][0]; P = &A[0][0];
for( I=1; I <= 3; I++ )
for( I=1; I <= 15: I++ ) { for( J = 1; J <=5; J++ )
{ printf(“%2c”, *P ); { printf(“%3c”, *P );
P++; P++;
} }
} printf( “\n “ );
}
}

Tercetak: Tercetak : A B C D E
A B C D E F G H I J K L M N O F G H I J
K L M N O
Contoh-01d Contoh-01e

#include <stdio.h> #include <stdio.h>


void main() void main()
{ char A[3][5] = { “ABCDE”, { char A[3][5] = { “ABCDE”,
“FGHIJ”, “FGHIJ”,
“KLMNO” }; “KLMNO” };
char *P; char *P;
int I, J; int I, J;
for( I=1; I <= 3; I++ ) P = &A[0][0];
{ P = &A[0][0]; for( I=1; I <= 5; I++ )
for( J = 1; J <=5; J++ ) { for( J = 1; J <= I; J++ )
{ printf(“%3c”, *P ); { printf(“%3c”, *P );
P++; P++;
} }
printf( “\n “ ); printf( “\n “ );
} }
} }
Tercetak : A B C D E Tercetak : A
A B C D E B C
A B C D E D E F
G H I J
P = &A[0][0] selalu mengembalikan K L M N O
pointer P menunjuk lokasi awal A[0][0]

412
Contoh-02. Mencgisi array dua dimensi

Soal :
Susun program (penggalan program) untuk menyiapkan array dua dimensi 3x5 bertipe
integer dengan nana A. Kemudian mengisi array tersebut sehingga isinya sebagai berikut
:
0 1 2 3 4
0 1 2 3 4 5
1 6 7 8 9 10
A
2 11 12 13 14 15

Catatan : Didalam memory array dua dimensi diatas sebenarnya secara fisik tersusun
sebagai berikut :

0,0 0,1 0,2 0,3 0,4 1,0 1,1 1,2 1,3 1,4 2,0 2,1 2,2 2,3 2,4

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
baris-0 baris-1 baris-2

0,0 maksudnya mewakili A[0][0]

Jawab :

Tanpa menggunakan pointer Menggunakan pointer


#include <stdio.h> #include <stdio.h>
main() main()
{ int A[3][5]; { int A[3][5];
int I, J, N; int *P;
N = 1; int I, N;
for( I=0; I <= 2; I++ )
P = &A[0][0];
{ for(J=0; J<=4; J++)
N = 1;
{ A[I][J] = N;
for( I=1; I <= 15; I++ )
N++;
{ *P = N;
}
P++;
}
N++;
}
Cara ini memandang array dua dimensi
}
secara logic sebagai suatu matrix yang
terdiri dari baris dan kolom sehingga
Cara ini memandang array dua dimensi
menggunakan indeks I dan J.
secara fisik sebagaimana ia tersimpan
I untuk baris, dan J untuk kolom.
didalam memory. Untuk menunjuk
alamat fisiknya didalam memory
digunakan sebuah pointer.

Dua instruksi ini : *P = N;


P++;
dapat digabung jadi satu
sebagai berikut : *P++ = N;

413
18.3 Soal-soal Latihan Mandiri

Soal-01. Apa yang tercetak bila program berikut ini dijalankan.

1. #include<stdio.h> 2. #include<stdio.h>
void main() void main()
{ int A, B, T, *P, *Q, *R ; { int I,*P;
A = 25; B = 12; int A[5]={15,12,25,17,10};
P = &A; Q = &B; R = &T; P = A;
*R = *P + *Q; P = P + 2;
printf(“%i”, *R ); printf(“%i”, *P);
} }

3. 4.
#include<stdio.h> #include<stdio.h>
void main() void main()
{ int I,*P; { int I,*P;
int A[5]={15,12,25,17,10}; int A[5]={15,12,25,17,10};
P = &A[2]; P = &A[2];
printf(“%i”, *++P); printf(“%i”, *--P);
printf(“\n%i”, *P); printf(“\n%i”, *P);
} }

5. #include<stdio.h>
6. #include<stdio.h>
void main() void main()
{ int I,*P; { int I,*P;
int A[5]={15,12,25,17,10}; int A[5]={15,12,25,17,10};
P = &A[2]; P = &A[2];
printf(“%i”, ++*P++); printf(“%i”, --*P--);
printf(“\n%i”, *P); printf(“\n%i”, *P);
} }

7. 8. #include<stdio.h>
#include<stdio.h>
void main() void main()
{ int I,*P; { int I,*P;
int A[5]={15,12,25,17,10}; int A[5]={15,12,25,17,10};
P = A; P = A;
I=0; I=1;
while(I <= 4) while(I <= 3)
{ printf(“\n%i”, *P); { printf(“\n%i”, *P);
P = P + 1; P = P + 2;
I = I + 2; I = I + 1;
} }

414
Soal-02. Sudah dibuat array dua dimensi int A[3][5] lengkap dengan isinya, dengan
ilustrasi sebagai berikut :

Ilustrasi array dua Yang secara fisik susunannya dalam memory sebagai berikut :
dimensi A[3][5]

0 1 2 3 4 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15
0 15 12 25 17 10 15 12 25 17 10 21 30 32 23 35 16 8 7 40 11

1 21 30 32 23 35

2 16 8 7 40 11

Apa yang tercetak bila isi array tersebut dicetak dengan menambahkan
instruksi sebagai berikut :

1. 2.
int I,*P; int I,*P;
P = &A[0][0]; P = &A[0][0];
I=1; I=1;
while(I <= 15) while(I <= 15)
{ printf(“%3i”, *P); { printf(“%3i”, *P);
P++; P+=2;
I++; I+=5;
} }

3. int I,J;*P; 4. int I,J;*P;


P = &A[0][0]; P = &A[0][0];
I=1; I=1;
while(I <= 3) while(I <= 5)
{ J = 1; { J = 1;
while (J <= 5 ) while (J <= 3 )
{ printf(“%3i”, *P); { printf(“%3i”, *P);
P++; P++;
J++; J++;
} }
printf(“\n”); printf(“\n”);
I++; I++;
} }

5. int I,J;*P; 6. int I,J;*P;


P = &A[0][0]; P = &A[0][0];
I=1; I=1;
while(I <= 3) while(I <= 3)
{ printf(“%3i”, *P); { printf(“%3i”, *++P);
P+=3; P+=3;
I++; I++;
} }

415
Soal-03. Sudah ada array A Satu Dimensi yang dibuat dengan int A[11].
Belum ada isinya dengan ilustrasi sebagai berikut :
0 1 2 3 4 5 6 7 8 9 10

0 1 2 3 4 5 6 7 8 9 10
Susun program (penggalan program) a. 1 2 3 4 5 6
untuk mengisi array tersebut dengan
menggunakan
Pointer
sehingga isinya menjadi sebagai b.
0
1
1 2
3
3 4
5
5 6
7
7 8
9
9 10
11
tergambar disebelah kanan :
0 1 2 3 4 5 6 7 8 9 10
b. 0 1 3 6 10

Soal-04. Sudah ada array Dua Dimensi yang dibuat dengan int A[3][5],
belum ada isinya. Susun program (penggalan program) untuk mengisi array A
tersebut dengan menggunakan pointer, sehingga isinya menjadi :

a. b. c.
1 2 3 4 5 1 2 3 1 3 5

6 7 8 9 10 4 5 6 7 9

11 12 13 14 15 7 8 9 11 13 15

d. e. f.
1 2 3 1 2 4 1 4 7 10 13

4 7 2 5 8 11 14

6 11 3 6 9 12 15

Soal-05. Susun algoritma untuk mencetak isi array tersebut


dengan menggunakan pointer untuk menunjuk alamat
Sudah ada array dua setiap elemen sehingga tercetak sebagai berikut :
dimensi yang dibuat
dengan char A[5][5],
sudah ada isinya sebagai a. A B C D E b. A B C D E c. A B C D E
berikut : F G H I J F G H I F G H I
K L M N 0 J K L J K L
P Q R S T M N M N
A B C D E
U V W X Y O O
F G H I J
K L M N O d. A F K P U e. A B C D E f. A
B G L Q V F G H I F G
P Q R S T C H M R W K L M K L M
U V W X Y D I N S X P Q P Q R S
E J O T Y U U V W X Y

416

Anda mungkin juga menyukai