ANAK FMIPA

Blognya Anak Fmipa

Anak Fmipa

LightBlog

Sunday, April 10, 2016

pointer c++

Pengertian Operator Pointer 


POINTERMerupakan sebuah variabel yang berisi alamat dari variabel lain. Suatu pointer dimaksudkan untuk menunjukan ke suatu alamat memori sehingga alamat dari suatu variabel dapat diketahui dengan mudah. Terdapat dua macam operator pointer yang disediakan oleh Borland C++ yaitu Operator dereference ( * ) dan Operator reference ( & ).
Macam-Macam Operator Pointer

Operator deference (&) ampersand sign  Operator ini biasa disebut dengan address of atau operator alamat. Dengan menggunakan operator deference variable akan menghasilkan alamat lokasi memori Operator reference (*)  Operator ini biasa disebut value pointed by. Dengan menggunakan operator ini akan dihasilkan nilai yang berada pada suatu alamat memori


Mendefinisikan variabel pointer

Suatu variabel pointer didefinisikan dengan bentuk sebagai berikut :  Tipe_data *nama_variabel;

1. tipe_data dapat berupa sembarang tipe seperti halnya pada pendefinisian variabel bukan pointer.

2.nama_variabel adalah  nama variabel pointer. Beberapa contoh pendifinisian variabel pointer :

 int *pint // Pointer ke int  char *pch //Pointer ke char  float *pfl //Pointer ke float


contoh #include <iostream> using namespace std; int main(){ int x=10; int *p=&x; cout <<"Nilai Dari X: " << x << endl; cout <<"Nilai Dari Pointer p: " << *p << endl; cout <<"alamat dari pointer p adalah"<<p<<endl; return 0; }


Pointer void 


void *ptr;

Merupakan pernyataan untuk mendefinisikan ptr sebagai variabel pointer void.
Suatu pointer void adalah pointer yang dapat menunjuk ke sembarang tipe data. Misalnya, Anda dapat mengatur agar pointer ini menunjuk ke tipe data int, tetapi di saat lain diperlukan untuk menunjuk data bertipe float

Contoh program

#include <iostream>
 using namespace std;
 int main() {
 void *ptr; //pointer tak bertipe
int vint = 50;
float vfl = 51.5;
ptr = &vint;
 //menunjuk ke int, diperkenankan
cout<<"Nilai yang ditunjuk oleh ptr : " <<*(int*)ptr<<endl;
ptr = &vfl;  //menunjuk ke float, diperkenankan
cout<<"Nilai yang ditunjuk oleh ptr : " <<*(float *)ptr<<endl;

return0; }

Pointer TO String 


Contoh hubungan pointer dan string ditunjukkan oleh program berikut :
 #include <iostream>
using namespace std;
int main();
char *nama1 = "SPIDERMAN";
 char *nama2 = "GATOTKACA";
cout<<"Awalnya saya suka "<<nama1<<endl;
 cout<<"dan masih saya suka "<<nama2<<endl; }


Pada contoh di atas :
Char *nama1 = “SPIDERMAN”;
Char *nama2 = “GATOTKACA”;

Akan menyebabkan C++ : · mengalokasikan nama1 dan nama2 sebagai variabel pointer yang menunjuk ke data bertipe char dan menempatkan konstanta string “SPIDERMAN” dan “GATOTKACA” ke suatu lokasi di memori komputer. Kemudian nama1 dan nama2 akan menunjuk ke lokasi string “SPIDERMAN” dan “GATOTKACA

Operasi Pointer 


Operasi Penugasan Suatu variabel pointer seperti hanya variabel yang lain, juga bisa mengalami operasi penugasan. Nilai dari suatu variabel pointer dapat disalin ke variabel pointer yang lain. Contoh program :

#include <iostream>
using namespace std;
int main() {
float *x1,*x2,y;
y = 13.45;
x1 = &y;
x2 = x1;
cout<<"Nilai variabel y = "<<y<<" ada di alamat "<<x1<<endl;
cout<<"Nilai variabel y = "<<y<<" ada di alamat "<<x2;

return 0; }


pointer to pointer 


#include <iostream> using namespace std;
int main(){
 int x=10;
 int *p=&x;
int **y=&p;
cout <<"Nilai Dari X: " << x << endl;
cout <<"Nilai Dari Pointer p: " << *p << endl;
cout <<"Nilai Dari Pointer y: " << **y << endl;
cout <<"alamat dari pointer p adalah"<<p<<endl;
cout <<"alamat dari pointer y adalah"<<y<<endl; return 0; }


Operasi Aritmatika 

Suatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer saja. Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan. Operasi penambahan dengan suatu nilai menunjukkan lokasi data berikutnya (indeks selanjutnya) dalam memori. Begitu juga operasi penguranganya. Contoh program :


#include<iostream> using
 namespace std;
 int main() {
int nilai[3], *penunjuk; nilai[0] = 125;
nilai[1] = 345;
nilai[2] =750;
penunjuk = &nilai[0];
 cout<<"Nilai "<<*penunjuk<<"ada di alamat"<<penunjuk<<endl;
cout<<"Nilai "<<*(penunjuk+1)<<" ada di alamat "<<(penunjuk+1)<<endl;
cout<<"Nilai "<<*(penunjuk+2)<<" ada di alamat "<<(penunjuk+2)<<endl;  }

 Operasi Logika Suatu pointer juga dapat dikenai operasi logika.

#include <iostream>
using namespace std;
int main() {
 int a = 100, b = 200, *pa,*pb;
pa = &a;
pb = &b;
if(pa<pb){
     cout<<"pa menunjuk ke memori lebih rendah dari pb"<<endl;
 }
if(pa==pb){
     cout<<"pa menunjuk ke memori sama dengan pb"<<endl;
}
if(pa>pb){
      cout<<"pa menunjuk ke memori lebih tinggi dari pb"<<endl;
}
 return 0; }


#include <iostream>
using namespace std;
float Rumus(int s){
return (s*s)+((3.14*(s*0.5)*(s*0.5))*0.5);
}

int main(){
int n=7; float (*Fptr)(int n);
 cout<<"gambar terdiri dari bujur sangkar dan setengah lingkaran dengan sisi : 7"<<endl; Fptr=Rumus;
cout<<"luas keseluruhan gambar adalah = "<<Rumus(n)<<endl ;
 return 0;
 }

No comments:

Post a Comment