Mengenal Pointer Pada C++ | Tegal1337

Sebelumnya kita sudah belajar tentang Array pada C++, Bagi anda yang belum membacanya, kalian bisa klik disini.
sekarang kita lanjut pada bagian Mengenal Pointer pada C++

Apa sih Pointer itu ?

Salah satu kelebihan dari bahasa C adalah karena bahasa ini mendukung sepenuhnya untuk pemanipulasian memori dengan menggunakan pointer. Namun dibalik itu, pointer juga merupakan salah satu fitur C++ yang berbahaya karena dapat mengakibatkan sistem operasi pada komputer kita menjadi crash (rusak). Penggunaan pointer dengan cara yang salah juga dapat menyebabkan bug yang sangat sulit ditemukan pada program kita.

Variabel Pointer

Pointer dapat dikatakan sebagai suatu variabel yang menyimpan alamat memori.  Bentuk umum pendeklarasian variabel yang bertipe pointer :

tipe_data *nama_pointer; //atau
tipe_data * nama_pointer; //atau
tipe_data* nama_pointer; 

Tipe data di atas berguna untuk menyatakan bahwa pointer yang kita deklarasikan tersebut akan ditempati oleh data dengan tipe tertentu. Sebagai contoh, pendeklarasian pointer P yang akan ditempati oleh tipe data long, maka akan seperti ini :

long *P; 

Jika kita mempunyai sebuah variabel yang bertipe long (misalnya X), maka nilai kita dapat memrintahkan pointer P diatas untuk menunjuk ke alamat yang ditempati oleh variabel X

Long X; //mendeklarasikan variabel X bertipe longinteger
long *P; //mendeklarasikan pointer P menunjuk ke tipe longinteger;
P = &X; //memerintahkan P untuk menunjuk alamat dari variabel X

Apabila kita analisis syntax diatas, sebenarnya konsepnya sangat sederhana. Kita tahu bahwa P adalah pointer (berisi alamat) dan &X juga berisi alamat, maka kita dapat menyimpan alamat dari variabel X tersebut kedalam pointer P.

Memasukan nilai pada Pointer

Nilai yang dimaksud tentu berupa alamat, bukan berupa nilai data. Perlu diperhatikan bahwa tipe data dari pointer harus sama dengan tipe data variabel yang akan menempatinya. Misalnya kita ingin mendeklarasikan pointer P ke tipe double dan kita juga memiliki variabel X yang bertipe int.
pada kasus ini kita tidak diijinkan untuk menyimpan alamat dari variabel X ke pointer P karena tipenya berbeda.
Contoh :

double P;
int X; //mendefinisikan variabel bertipe int
P = &X; /*salah, karena P hanya menyimpan alamat dari variabel yang bertipe double saja. */

Menggunakan kata kunci New

Untuk mengalokasikan memori pada ruang yang masih kosong menggunakan kata kunci new. Kata kunci ini diikuti oleh tipe data yang akan dialokasikan sehingga kompiler akan mengetahui seberapa besar ruang memori yang dibutuhkan untuk proses pengalokasian tersebut.

nama_pointer = new tipe_data;

Menggunakan kata kunci Delete

Memori yang sudah tidak digunakan lagi dapat dihapus agar tidak memborosi memori komputer.

delete nama_pointer;

  • Menampilkan nilai dan alamatnya
 berikut ini adalah contoh program penggunaan tipe data pointer :

#include <iostream.h>

using namespace std;

int main(){

    long *P;
    long X;
    P = &X;

    X = 10;

    cout <<"Nilai X :"<<X<<endl;
    cout <<"Nilai *P : "<<*P<<endl;
    cout <<"Nilai &X : "<<&X<<endl;

    *P = 200;

    cout <<"Nilai X :"<<X<<endl;
    cout <<"Nilai *P : "<<*P<<endl;
    cout <<"Nilai &X : "<<&X<<endl;

    return 0;
}
  • Pointer tanpa tipe data
Berikut adalah contoh program yang menggunakan pointer dapat menyimpan alamat dan variabel-variabel yang bertipe apapun.

#include <iostream.h>

using namespace std;

int main(){

    void *P;
    int X;
    long Y;
    double Z;

    P = &X;
    X = 10;

    cout<<"Nilai X : "<<X<<endl;
    cout<<"Nilai P : "<<P<<endl;
    cout<<"Nilai &X : "<<&X<<endl;

    P = &Y;
    Y = 2000;

    cout<<"Nilai Y : "<<Y<<endl;
    cout<<"Nilai P : "<<P<<endl;
    cout<<"Nilai &Y : "<<&Y<<endl;

    P = &Z;
    Z = 21.0378;

    cout<<"Nilai Z : "<<Z<<endl;
    cout<<"Nilai P : "<<P<<endl;
    cout<<"Nilai &Z : "<<&Z<<endl;

    return 0;
}
  • Menggunakan kata kunci New

#include <iostream.h>
#define MAX 5 

using namespace std;

int main(){
    float *P1;
    int *P2;
    
    P1 = new float;
    *P1 = 3.14;
    
    cout <<"Nilai *P1 : "<<*P1<<endl;
    cout <<"Nilai P1 : "<<P1<<endl;

    P2 = new int[MAX];
    
    for (int C=0; C<5; C++){
        *P2 = (C+1) * 10;
        P2 += 1;
    }
    
    P2 -= 5;
    
    for(int c=0; c<5; c++){
        cout<<"Nilai *P2 ke-"<<c<<" : "<<*P2<<endl;
        cout<<"Nilai P2 ke-"<<c<<" : "<<P2<<endl;
        P2 += 1;
    }
    
    return 0;
}
  • Menggunakan kata kunci Delete

#include <iostream.h>

using namespace std;

int main(){
    int *P;
    P = new int;
    *P = 100;
    
    cout<<"Nilai *P : "<<*P<<endl;
    
    delete P;
    
    return 0;
}

Setelah mengenal Pointer dalam Bahasa Pemrograman C++, selanjutnya kita akan belajar mengenai penggunaan Sorting dan penulisanya di C++

Comments

Popular posts from this blog

[BUG BOUNTY] Email Spoofing | No Valid SPF Record

Legion Tutorial - Information Gathering (Kali Linux)

Deface web with auto sql balitbang method