Operator Pointer
1.
& (Ampersand)
- Operator & merupakan operator alamat.
- Pada saat pendeklarasian variable, user tidak diharuskan menentukan lokasi sesungguhnya pada memory, hal ini akan dilakukan secara otomatis oleh kompiler dan operating sysem pada saat run-time.
- Jika ingin mengetahui dimana suatu variable akan disimpan, dapat dilakukan dengan memberikan tanda ampersand (&) didepan variable , yang berarti "address of".
- Contoh : ted = &input;
Penulisan tersebut berarti akan memberikan variable ted alamat dari
variable input. Karena variabel input diberi awalan karakter ampersand (&),
maka yang menjadi pokok disini adalah alamat dalam memori, bukan isi variable.
2.
* (Asterisk)
- Operator * merupakan operator reference.
- Dengan menggunakan pointer,kita dapat mengakses nilai yang tersimpan secara langsung dengan memberikan awalan operator asterisk (*) pada identifier pointer, yang berarti "value pointed by".
- Contoh :
beth = *ted;
(dapat dikatakan: "beth sama dengan nilai yang ditunjuk oleh ted")
Contoh deklarasi variabel biasa dan pointer:
1. Variabel biasa
Int value1 = 4;
Float value2 = 3.5;
Char name[10] = “anton”; //array of char (string)
2. Variabel pointer
Int *value_p1; //dangling pointer
Int *value_p2 = &value1; //pointing to data
type int
Char *value_p3 = name; //pointing
to array of char
Char *value_p4 = &name[0];
Operasi Pointer
- Operasi Penugasan
Suatu variabel pointer seperti halnya variabel
yang lain, juga bisa mengalami operasi penugasan. Nilai dari suatu variabel
pointer dapat disalin ke variabel pointer yang lain.
x1 = &y
x2= x1
|
The address of the variable y is copied to x1
|
The contents of the variable x1 copied to the variable x2
|
Contoh Program:
- Operasi Aritmatika
#include<iostream>
using namespace std;
int main ()
{
int *x1, *x2, y;
y = 5;
x1 = &y;
x2 = x1;
//value of y
cout<<" The value of the variable y is "<<y<<endl;
//the address of the variable y that copied to x1
cout<<" The addres of the variable y is "<<x1<<endl;
//get value of variable y from *x2
cout<<" The value of the variable y is "<<*x2<<endl;
}
using namespace std;
int main ()
{
int *x1, *x2, y;
y = 5;
x1 = &y;
x2 = x1;
//value of y
cout<<" The value of the variable y is "<<y<<endl;
//the address of the variable y that copied to x1
cout<<" The addres of the variable y is "<<x1<<endl;
//get value of variable y from *x2
cout<<" The value of the variable y is "<<*x2<<endl;
}
- Pada pointer dapat dilakukan operasi aritmatika yang akan menunjuk suatu alamat memori baru.
- Hanya nilai integer saja yang bisa dioperasikan pada variabel pointer.
- Biasanya hanya operasi penambahan/pengurangan saja.
- Misal pointer X bertipe int (2 bytes), maka X+1 akan menunjuk pada alamat memori sekarang (mis. 1000) ditambah sizeof(X), yaitu 2, jadi 1002.
Contoh Program:
#include<iostream>
using namespace std;
int main(void){
int dateofbirth[] = {29, 5, 1996};
int *pdate;
//*pdate contains the address of dateofbirth
pdate = dateofbirth;
cout<<" Accessed using a pointer\n";
cout<<" Date = "<< *pdate;
cout<<"\n Month = "<< *(pdate + 1);
cout<<"\n Year = "<< *(pdate + 2);
cout<<"\n Accessed using an array\n";
cout<<" Date = "<< dateofbirth[0];
cout<<"\n Month = "<< dateofbirth[1];
cout<<"\n Year = "<< dateofbirth[2];
}
using namespace std;
int main(void){
int dateofbirth[] = {29, 5, 1996};
int *pdate;
//*pdate contains the address of dateofbirth
pdate = dateofbirth;
cout<<" Accessed using a pointer\n";
cout<<" Date = "<< *pdate;
cout<<"\n Month = "<< *(pdate + 1);
cout<<"\n Year = "<< *(pdate + 2);
cout<<"\n Accessed using an array\n";
cout<<" Date = "<< dateofbirth[0];
cout<<"\n Month = "<< dateofbirth[1];
cout<<"\n Year = "<< dateofbirth[2];
}
- Operasi Logika
Yaitu operasi yang menghasilkan
nilai true dan false. Beberapa macam operator logika diantaranya:
&& (AND), || (OR), ! (NOT), < (KURANG DARI), > (LEBIH DARI),
<= (KURANG DARI SAMA DENGAN), >= (LEBIH DARI SAMA DENGAN, == (SAMA DENGAN), != (TIDAK SAMA DENGAN)
0 comments:
Post a Comment