Memasukkan dan Inisialisasai Pointer Menggunakan C / C++

Memasukkan Nilai ke dalam Pointer

Bagian ini akan membahas bagaimana cara memasukkan nilai pada pointer. Nilai yang dimaksud di sini tentu berupa alamat, bukan berupa nilai data. Walaupun tampak mudah tapi kita juga harus berhati-hati dalam melakukan hal ini. Perlu diperhatikan bahwa tipe data dari pointer harus sama dengan tipe data dari variabel yang akan menempatinya. Hal ini merupakan hal yang biasanya terabaikan oleh para progammer pemula. Sebagai contoh, kita mendeklarasikan pointer P ke tipe double dan kita juga memiliki variabel X yang bertipe int. Pada kasul ini kita tidak diizinkan untuk menyimpan alamat dari variabel X ke pointer P karena tipenya berbeda. Berikut ini potongan kode program yang akan menunjukkan konsep di atas :


double *P;
int X; // mendeklarasikan variabel yang bertipe integer

P = &X; /* SALAH, karena P hanya dapat menyimpan alamat dari variabel yang bertipe double saja



Pointer Tanpa Tipe

Sebelumnya kita telah mengetahui bahwa pointer harus diisikan dengan alamat dari variabel yang bertipe sama dengan tipe pointer tersebtu. Sebenarnya ada cara khusu yang dapat membuat pointer yang kita deklarasikan tersebut dapat menunjuk ke semua tipe data, yaitu dengan mendeklarasikan pointer tersebut sebagai pointer tanpa tipe. Pointer semacam ini sering dinamakan "void pointer".

Bentuk umum untuk mendeklarasikan pointer tanpa tipe ini adalah sebagai berikut :

void *nama_pointer;

Berikut ini contoh program yang dapat membuktikan bahwa pointer tanpa tipe dapat menyimpan alamat dari variabel yang bertipe apapun.


#include <iostream>
using namespace std;
int main() {
  void *P; // Mendeklarasikan pointer P
            // sebagai pointer tanpa tipe
  // Mendeklarasikan variabel X, Y dan Z
  // dengan tipe berbeda
  int X;
  long Y;
  double Z;
  // Memerintahkan P untuk menunjuk
  // ke alamat dari variabel X
  P = &X;
  X = 10; // Mengisikan variabel X dengan nilai 10
  // Menampilkan hasil
  cout<<"Nilai X  : "<<X<<endl;
  cout<<"Nilai P  : "<<P<<endl;
  cout<<"Nilai &X : "<<&X<<endl;
  cout<<endl;
  // Memerintahkan P untuk menunjuk
  // ke alamat dari variabel Y
  P = &Y;
  Y = 2000; // Mengisikan variabel Y dengan nilai 2000
  // Menampilkan hasil
  cout<<"Nilai Y  : "<<Y<<endl;
  cout<<"Nilai P  : "<<P<<endl;
  cout<<"Nilai &Y : "<<&Y<<endl;
  cout<<endl;
  // Memerintahkan P untuk menunjuk
  // ke alamat dari variabel Z
  P = &Z;
  Z = 21.0378; // Mengisikan variabel Z
                // dengan nilai 21.0378
  // Menampilkan hasil
  cout<<"Nilai Z  : "<<Z<<endl;
  cout<<"Nilai P  : "<<P<<endl;
  cout<<"Nilai &Z : "<<&Z<<endl;
  return 0;
}

Hasil yang akan diberikan dari program di atas adalah sebagai berikut :

Nilai X : 10
Nilai P : 0x22fef8
Nilai &X : 0x22fef8
Nilai Y : 2000
Nilai P : 0x22fef4
Nilai &Y : 0x22fef4
Nilai Z : 20.0378
Nilai P : 0x22fee0
Nilai &Z : 0x22fee0

Seperti yang kita lihat di atas bahwa P dapat menunjuk ke tipe data yang berbeda-beda. Sebagai bukti dari hal ini adalah nilai P yang berbeda, yaitu sesuai dengan alamat dari variabel yang ditunjuk.

Melakukan Inisialisasi pada Pointer

Setiap kita mendeklarasikan sebuah pointer, maka pointer tersebut akan menunjuk lokasi acak di memori. Oleh karena itu, kita perlu mengatur pointer yang kita dekalrasikan tersebut dalam keadaan NULL, atau tidak menunjuk lokasi manapun. untuk membuktikan hal ini, coba lihat contoh program di bawah ini :


#include <iostream>
using namespace std;
int main() {
  int *P;  // Mendeklarasikan pointer P
           // yang akan menunjuk tipe data int
  cout<<"Alamat yang ditunjuk oleh pointer P: "<<P;
  return 0;
}

Contoh hasil dari program di atas adalah sebagai berikut :

alamat yang ditunjuk oleh pointer P : 0x4De16e

Pointer serperti di atas disebut sebagai pointer yang belum diinisialisasikan. Untuk melakukan inisialisasi pointer, kita dapat mengisikan nilai NULL ke dalam pointer yang kita deklarasikan. Berikut ini contoh kode program yang akan menunjukkan cara melakukan inisialisasi pada pointer.


#include <iostream>
using namespace std;
int main() {
  int *P; // Mendeklarasikan pointer P
           // yang akan menunjuk tipe data int
  P = NULL; // Inisialisasi pointer P
            // dengan nilai NULL
  cout<<"Alamat yang ditunjuk oleh pointer P: "<<P;
  return 0;
}
 Kali ini, hasil yang akan diperoleh adalah sebagai berikut :

Alamat yang ditunjuk oleh pointer P : 0

Nilai - pada hasil di atas menunjukkan bahwa pointer tersebut menunjuk ke lokasi manapun di memori.

0 Response to "Memasukkan dan Inisialisasai Pointer Menggunakan C / C++"

Post a Comment