Pengenalan Pointer dalam Bahasa C++
1. PENGERTIAN POINTER (Bahasa C++)
Pointer
adalah variable yang berisi alamat memory sebagai nilainya dan berbeda dengan
variable biasa yang berisi nilai tertentu. Dengan kata lain, pointer berisi
alamat dari variable yang mempunyai nilai tertentu.
Dengan demikian, ada
variabel yang secara langsung menunjuk ke suatu nilai tertentu, dan variabel
yang secara tidak langsung menunjuk ke nilai.
Adapun bentuk umum dari
pernyataan variabel pointer dalam C++ adalah :
Type
*variabel-name
Dengan :
Type adalah
tipe dasar pointer
Variabel name
adalah nama variabel pointer
* adalah
variabel pada alamatnya yang ditentukan oleh operand.
Contoh :
Int
*int_pointer; // pointer to integer
Float
*float_pointer; // pointer to float
Contoh :
//Program :
pointer.cpp
#include
<stdio.h>
main()
{
int a, *b;
a=20;
b=&a;
printf
(" Pointer b menunjukkan alamat =%p\n",b);
printf
(" Alamat tersebut berisi nilai :%d\n",*b);
}
2. Program : pointer1.cpp
#include <iostream
.h>
// cetak p dan *p
void main(void)
{
int v = 7, *p;
p = &v;
cout << "
Nilai v = " << v << " dan *p = " << *p
<<
"\nAlamatnya = " << p << '\n';
}
Bila program diatas dijalankan, maka hasilnya adalah sebagai berikut
:
Nilai v = 7 dan *p = 7
Alamatnya = efffb24
3. Program:pointer2.cpp
#include
<iostream.h>
int main ()
{
int value1 = 5, value2
= 15;
int * mypointer;
mypointer =
&value1;
*mypointer = 10;
mypointer =
&value2;
*mypointer = 20;
cout <<
"value1==" << value1 << "/ value2==" <<
value2;
return 0;
}
Bila program diatas dijalankan, maka hasilnya adalah sebagai berikut
:
“value1==” 10 << “/
value2==20
4.
OPERATOR POINTER
Ada
beberapa operator yang bisa digunakan dalam pointer. Operator tersebut adalah
operator alamat (yang dilambangkan dengan simbol &) dan operator unary yang
mengembalikan alamat dari operandnya.
Sebagai contoh,
diasumsikan deklarasi sebagai berikut :
Int y = 5;
Int *yPtr;
Maka pernyataan :
YPtr = &y;
Pernyataan ini
mengandung arti bahwa alamat dari variabel y ditujukan kepada variabel pointer
yPtr.
Contoh lain :
Int balance, value;
Int *balptr;
Balance = 3200; // step
1
Balptr=&balance; //
step 2
Value=*balptr; // step
3
Contoh diagram :
Step 1
Step 2
Step 3
12 Balptr 12 100 Balptr
12 100
100 3200 Balance 100
3200 Balance 100 3200
130 value 130 value 130
3200
Contoh :
5. Program:pointer3.cpp
#include
<iostream.h>
int main()
{
int *ptr, num; // Step
1
ptr = # // Step
2
*ptr = 100; // Step 3
cout << num
<< " ";
(*ptr)++; // Step 4
cout << num
<< " ";
(*ptr)*=2; // Step 5
cout << num
<< "\n";
return 0;
}
Bila program dijalankan :
100 101 202
Contoh diagram :
Step 1
Step 2
Step 3
Step 4
12 *int Ptr 12 50 Ptr
12 50 Ptr 12 50
50 int num 50 int num
50 100 num 50 101
... ... ... ...
6. EKSPRESI POINTER
Pointer Aritmatika
Hanya 4 operator
aritmatik dapat digunakan pada pointer ++, = =, +, dan -. Asumsi integer 32
bit.
Contoh :
Int *p1;
p1++;
p1--;
Contoh :
7. Program:pointer4.cpp
#include
<iostream.h>
int main()
{
int i[10], *i_ptr;
double f[10], *f_ptr;
int x;
i_ptr = i; // i_ptr
points to first element of i
f_ptr = f; // f_ptr
points to first element of f
for(x=0; x<10; x++)
cout << i_ptr+x
<< " " << f_ptr+x << "\n";
return 0;
}
Bila program dijalankan
:
0xeffffd9c 0xeffffd48
0xeffffda0 0xeffffd50
0xeffffda4 0xeffffd58
0xeffffda8 0xeffffd60
... ...
8. Pointer Perbandingan
Pointer dapat
dibandingkan dengan menggunakan operator hubungan, seperti !=, ==, <, dan
>.
Contoh :
9. Program:pointer5.cpp
#include
<iostream.h>
int main()
{
int num[10];
int *start, *end;
start = num;
end = &num[9];
while(start != end) {
cout <<
"Masukkan bilangan sebanyak 9 data : ";
cin >> *start;
start++;
}
return 0;
}
Data yang akan
dimasukkan sebanyak 9 buah data dan program tidak akan berhenti apabila belum
sampai 9 buah data.
10. POINTER VERSUS ARRAY
Array
dan pointer adalah dua struktur data yang saling berkaitan satu dengan yang
lain dalam C, dan dapat saling dipertukarkan penggunaannya. Karena array dapat
didefinisikan sebagai pointer.
Contoh :
int *bPtr, b[5];
Dapat dibuat menjadi :
bPtr = b;
bPtr = &b[0];
Berarti bPtr ditugaskan
untuk menunjukkan ke alamat elemen pertama dari array b atau b[0].
Elemen array b[3] dapat
ditulis :
* (bPtr + 3)
Alamat &b[3] dapat
ditulis :
bPtr +3
Deklarasi suatu
variabel array x[] yang berisi nilai int dapat ditulis :
int *x;
Variabel array ganda
dapat ditulis :
int y [ ] [ ];
int *y [ ];
int *( *y);
Penggunaan pointer dan
array untuk deklarasi variabel array ganda untuk menyimpan empat buah elemen
yang masing-masing bertipe string (array dari karakter).
char *suit [4] = {
“Hearts”, “Diamonds”, “Clubs”, “Spades” };
Contoh :
11. Program:pointer6.cpp
#include
<iostream.h>
#include <stdio.h>
int main()
{
char str[80];
char token[80];
char *str_ptr, *tk_ptr;
cout <<
"Masukkan sebuah kalimat : ";
gets(str);
str_ptr = str;
while(*str_ptr) {
tk_ptr = token;
while( *str_ptr != ' '
&& *str_ptr ) {
*tk_ptr = *str_ptr;
tk_ptr++;
str_ptr++;
}
if(*str_ptr) str_ptr++;
*tk_ptr = '\0';
cout << token
<< endl;
}
return 0; }
//Program:pointer7.cpp
#include
<iostream.h>
#include
<stdio.h>
int main()
{
char str[80];
char token[80];
int i, j;
cout <<
"Masukkan sebuah kalimat: ";
gets(str);
for(i=0; ; i++) {
for(j=0; str[i] != ' '
&& str[i]; j++, i++)
token[j] = str[i];
token[j] = '\0';
cout << token
<< '\n';
if(!str[i]) break;
}
return 0;
}
Pada contoh program
pointer 6 adalah program dengan pointer, sedangkan contoh program pointer 7
dengan menggunakan array. Hasil dari kedua program tersebut sama.
12. POINTER INDEX
Pointer tidak hanya
dapat digunakan untuk mengakses elemen array, tetapi pointer juga dapat diindex
seperti pada array.
Contoh :
13. Program:pointer8.cpp
#include
<iostream.h>
#include
<ctype.h>
int main()
{
char str[20] =
"hello tom";
char *p;
int i;
p = str;
for(i=0; p[i]; i++)
p[i] = toupper(p[i]);
cout << p;
return 0;
}
Bila program diatas
dijalankan, maka hasilnya adalah sebagai berikut :
HELLO TOM
Proses pengindexan
pointer dapat dilihat pada variabel p yang menunjuk pada variabel str yang
berisi data nama dengan panjang 20. Fungsi toupper memperjelas proses
pengindexan.
14.
KONSTANTA STRING DAN POINTER
Konstanta string
terlihat dalam program teks dan disimpan dalam tabel string serta setiap entry
dalam tabel string, pointer string dibangkitkan.
Contoh :
15. Program pointer9.cpp
#include
<iostream.h>
int main()
{
char *s;
s = "Pointers are
fun to use.\n";
cout << s;
return 0;
}
Bila program diatas
dijalankan, maka hasilnya adalah sebagai berikut :
Pointers are fun to
use.
15. ARRAY POINTER
Pointer dapat
diarraykan seperti tipe data yang lain dalam C++. Untuk menyatakan sebuah array
pi dari pointer sebanyak 10 buah data yang bertipe 10 integer, dapat ditulis :
int *pi [10];
Untuk menentukan alamat
dari variabel integer disebut var ke elemen ketiga dari pointer array, dapat
ditulis :
int var;
pi [2] = &var
Contoh :
//Program:point10.cpp
#include
<iostream.h>
int main ()
{
int numbers[5];
int *p;
p = numbers; *p = 10;
p++; *p = 20;
p = &numbers[2]; *p
= 30;
p = numbers + 3; *p =
40;
p = numbers; *(p+4) =
50;
for (int n=0; n<5;
n++)
cout <<
numbers[n] << ", ";
return 0;
}
Bila program diatas
dijalankan, maka hasilnya adalah sebagai berikut :
10, 20, 30, 40, 50,
16.
POINTER DALAM POINTER
C++ memperbolehkan
penggunaan pointer dalam pointer yang berisi data yang sama atau berbeda. Dalam
kondisi pointer biasa atau pointer tunggal, diagramnya adalah :
Pointer Variabel
Untuk pointer dalam
pointer, diagramnya adalah :
Pointer Pointer
Variabel
Contoh :
char a;
char *b;
char **c;
a = ‘z’;
b = &a;
c = &b;
Dengan misal data acak
pada memori 7230, 8092, dan 10502, maka diagramnya adalah :
a b c
7230 8092 10502
Dari diagram dapat
disimpulkan :
· c adalah sebuah
variabel dengan tipe (char**) yang berisi 8092
· *c adalah sebuah
variabel dengan tipe (char*) yang berisi 7230
· **c adalah sebuah
variabel dengan tipe (char) yang berisi ‘z’
Contoh :
//Program:point12.cpp
#include
<iostream.h>
#include
<stdio.h>
#include
<string.h>
int main()
{
int x, *p, **q;
x = 10;
p = &x;
q = &p;
cout << **q; //
prints the value of x
return 0;
}
Bila program diatas
dijalankan, maka hasilnya adalah sebagai berikut :
10
Posting Komentar untuk "Pengenalan Pointer dalam Bahasa C++"