• Tidak ada hasil yang ditemukan

Document - SKB - STMIK EL RAHMA MENGENAL POINTER

N/A
N/A
Protected

Academic year: 2017

Membagikan "Document - SKB - STMIK EL RAHMA MENGENAL POINTER"

Copied!
10
0
0

Teks penuh

(1)

MENGENAL POINTER

Pointer sesungguhnya berisi alamat dari suatu data, bukan data sebagaimana variabel biasa. Dengan kata lain pointer adalah variabel yang berisi alamat memori sebagai nilainya dan berbeda dengan variabel biasa yang berisi nilai tertentu.

0x0012ff88 Menunjuk ke variabel

0x0012ff88

pointer variabel

Mengetahui Alamat variabel

Alamat dari variabel dapat diketahui dengan menambahkan operator alamat berupa simbol & di depan nama variabel.

Contoh program :

#include <iostream.h> #include <conio.h>

void main() {

clrscr(); int a = 11; float b = 12.4; double c = 12.23456;

cout<<"Isi Variabel :"<<endl; cout<<"a = "<<a<<endl;

cout<<"b = "<<b<<endl; cout<<"c = "<<c<<endl;

cout<<"\nAlamat Variabel :"<<endl; cout<<"a = "<<&a<<endl;

cout<<"b = "<<&b<<endl; cout<<"c = "<<&c<<endl; getch();

}

Output :

Isi Variabel : a = 11

b = 12.4 c = 12.2346

(2)

a = 0x0012ff88 b = 0x0012ff84 c = 0x0012ff7c

Mendefinisikan Variabel Pointer

Suatu variabel pointer didefinisikan dengan bentuk sebagai berikut :

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

- nama_variabel adalah nama variabel pointer

- * adalah operator memori yang fungsinya untuk mengembalikan nilai variabel pada alamatnya yang ditentukan oleh operand.

Supaya suatu variabel menunjuk ke variabel lain, mula-mula harus diisi dengan alamat dari variabel yang hendak ditunjuk.

Contoh program :

#include <iostream.h> #include <conio.h> void main()

{

int var_int = 55; // Variabel bukan pointer int *poin_int; // Variabel pointer clrscr();

poin_int = &var_int; // Pointer menunjuk ke vint cout << "Alamat var_int = " << &var_int << endl; cout << "poin_int = " << poin_int << endl;

getch(); }

Output :

Alamat var_int = 0x0012ff88 Poin_int = 0x0012ff88

Pada program diatas :

cout << "poin_int = " << poin_int << endl;

ternyata menampilkan isi pointer itu sendiri, bukan isi dari variabel vint.

Mengakses Nilai yang ditunjuk Pointer

Berdasarkan contoh program diatas, nilai dari var_int dapat diakses melalui poin_int setelah pernyataan : poin_int = &var_int

dijalankan. Caranya dengan melibatkan operator “tak langsung”. Operator ini berupa simbol “ * “ dan diletakkan di depan nama variabel pointer.Contoh

*poin_int

(3)

Contoh program :

#include <iostream.h> #include <conio.h>

void main() {

int var_int = 60; // Variabel bukan pointer int *poin_int; // Variabel pointer clrscr();

poin_int = &var_int; // Pointer menunjuk ke vint cout << " Nilai yang ditunjuk oleh pint = "

<< *poin_int << endl; getch();

}

Output:

Nilai yang ditunjuk oleh pint = 60

Pointer void

Untuk membuat pointer yang tidak bertipe yakni dengan meletakkan kata kunci void pada bagian penentu tipe pointer. Contoh :

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.h> #include <conio.h> void main()

{

clrscr();

void *ptr; // Pointer tak bertipe int vint = 45;

float vfl = 17.5;

ptr = &vint; // menunjuk ke int cout << "Nilai yang ditunjuk oleh ptr = " << *(int *)ptr << endl;

ptr = &vfl; // menunjuk ke float cout << "Nilai yang ditunjuk oleh ptr = " << *(float *) ptr << endl;

(4)

Output :

Nilai yang ditunjuk oleh ptr = 45

Nilai yang ditunjuk oleh ptr = 17.5

Dari program diatas bahwa variabel pointer ptr dapat menunjuk ke tipe int ataupun float.

Pointer dapat pula digabungkan dengan array, karena pada umumnya antara pointer dan array mempunyai kesamaan.

Contoh program :

#include <iostream.h> #include <conio.h> void main()

{

clrscr();

int tgl_lahir[] = {28, 11, 1982 }; int *poin_tgl;

poin_tgl = tgl_lahir; // ptgl menunjuk ke array cout << "Nilai yang ditunjuk poin_tgl : "

<< *poin_tgl << endl;

cout << "Nilai dari tgl_lahir[0] : " << tgl_lahir[0] << endl;

getch(); }

Output :

Nilai yang ditunjuk poin_tgl : 28

Nilai dari tgl_lahir[0] : 28

Setelah penugasan poin_tgl = tgl_lahir ptgl akan menunjuk ke elemen pertama (tgl_lahir[0]) dari array tgl_lahir.

Untuk mengakses semua tanggal dapat dilakukan dengan perintah :

for (int i=0;i<3;i++)

cout<<*(poin_tgl+i)<<endl;

Array Pointer

Suatu array bisa digunakan untuk menyimpan sejumlah pointer. Sebagai contoh :

(5)

merupakan pernyataan untuk mendefinisikan array namahari yang berisi 7 buah elemen berupa pointer. Pointer ini menunjuk ke data bertipe char.

Contoh program :

#include <iostream.h> #include <conio.h>

void main() {

clrscr();

char *namahari[] = {"Senin", "Selasa", "Rabu", "Kamis", "Jumat","Sabtu", "Minggu"};

for (int i = 0; i < 7; i++) cout << namahari[i] << endl; getch();

}

Output :

Senin

Selasa

Rabu

Kamis

Jumat

Sabtu

Minggu

Pointer Menunjuk Pointer

Suatu pointer bisa menunjuk ke pointer lain

ptr2 ptr1 Var_x

Untuk membentuk rantai seperti gambar diatas diperlukan pendefinisian sebagai berikut :

int var_x; //Variabel bertipe int

int *ptr1; //Variabel pointer yg menunjuk ke data bertipe int

int **ptr2; //Variabel pointer yg menunjuk ke pointer int

(6)

Agar ptr1 menunjuk ke variabel var_x, perintah yang diperlukan berupa :

ptr1 = &var_x;

Sedangkan supaya ptr2 menunjuk ke ptr1, diperlukan perintah :

ptr2 = &ptr1;

Contoh :

#include <iostream.h> #include <conio.h> void main()

{

clrscr();

int var_x = 2345;

int *ptr1; //pointer ke variabel bukan pointer int **ptr2; //pointer ke pointer

cout << "var_x = " << var_x << endl; //penugasan alamat

ptr1 = &var_x; ptr2 = &ptr1;

//Mengakses nilai var_x melalui ptr1 cout << "*ptr1 = " << *ptr1 << endl; //Mengakses nilai var_x melalui ptr2 cout << "**ptr2 = " << **ptr2 << endl; getch();

}

Output :

var_x = 2345

*ptr1 = 2345

**ptr2 = 2345

Pointer Dan Fungsi

Pointer biasa digunakan di dalam argumen fungsi kalau nilai argumen dimasudkan untuk diubah di dalam fungsi.

Pointer Sebagai Argumen Fungsi

#include <iostream.h>

#include <conio.h>

void ubah_nilai(int &x);

void main() {

clrscr();

int pinokio = 80;

(7)

<< pinokio << endl;

ubah_nilai(pinokio);

cout << "Nilai untuk pinokio sekarang : " << pinokio << endl;

getch(); }

//Definisi fungsi

void ubah_nilai(int &x) {

x = 95; }

Output :

dengan menuliskan & didepan argumen fungsi, nilai argumen dapat diubah didalam fungsi. hal serupa dapat diimplentasikan didalam pointer sebagai berikut :

#include <iostream.h> #include <conio.h>

void ubah_nilai(int *x);

void main() {

clrscr();

int pinokio = 80;

cout << "Nilai mula-mula untuk pinokio : " << pinokio << endl;

ubah_nilai(&pinokio);

cout << "Nilai untuk pinokio sekarang : " << pinokio << endl;

getch(); }

//Definisi fungsi

void ubah_nilai(int *x) {

*x = 95; }

Perbedaan :

 Fungsi ubah_nilai() didefinisikan sebagai judul berupa void ubah_nilai(int *x)

 Pada saat fungsi dipanggil argumen perlu ditulis dengan awalan & (&pinokio)

 Prototipe fungsi disesuaikan dengan definisi fungsi : void ubah_nilai(int *x);

(8)

STRUKTUR

Struktur bermanfaat untuk mengelompokkan sejumlah data dengan tipe yang berlainan. Apabila

suatu struktur telah dideklarasikan, struktur ini dapat dgunakan untuk mendefinisikan suatu

variabel.

Suatu struktur juga dapat mengandung struktur yang lain dan anggota struktur dapat diakses menggunakan bentuk :

Varibel_struktur.nama_anggota

Contoh program lengkap yang melibatkan pendeklarasian dan pendefinisian variabel struktur dan juga pengaksesan terhadap anggota variabel struktur dapat dilihat dibawah ini :

#include <iostream.h> #include <conio.h> void main()

{

struct data_tanggal // Pendeklarasian {

int tahun; int bulan; int tanggal; };

data_tanggal tanggal_lahir; // Pendefinisian struktur // Pengaksesan anggota struktur

tanggal_lahir.tanggal = 28; tanggal_lahir.bulan = 11; tanggal_lahir.tahun = 1982;

cout << tanggal_lahir.tanggal << “ /”’ << tanggal_lahir.bulan << “/ “ << tanggal_lahir.tahun << endl; }

Hasil eksekusi :

Pada program diatas tanda titik diantara nama variabel dan nama anggota menyatakan penugasan untuk memberikan nilai 28 ke anggota tanggal pada variabel struktur tanggal_lahir.

Pemberian nilai terhadap suatu struktur dapat dilakukan dengan bentuk :

(9)

sepanjang kedua variabel adalah variabel struktur bertipe sama. Contoh program :

#include <iostream.h> #include <conio.h> void main()

{

struct data_tanggal // Pendeklarasian {

int tahun; int bulan; int tanggal; };

data_tanggal tgl1, tgl2 ; // Pendefinisian struktur // Penugasan per anggota

tgl1.tanggal = 28; tgl1.bulan = 11; tgl1.tahun = 1982;

// Penugasan antaranggota struktur tgl1 = tgl2;

cout << tgl2.tanggal << ‘ / ’

<< tgl2.bulan << ‘ / ’ << tgl2.tahun << endl; }

Hasil eksekusi :

(10)

Array struktur

Adalah array yang angota datanya berupa struktur Contoh:

#include <iostream.h> #include <conio.h>

void main() {

struct mahasiswa {

int nim;

char nama[30][1]; };

int jml;

mahasiswa mhs[25];

cout<<"Berapa jumlah siswa : "; cin>>jml;

for(int i = 0;i < jml; i++) {

cout<<"Nim : ";cin>>mhs[i].nim; cout<<"Nama : ";cin>>mhs[i].nama[i]; }

for(int i = 0;i < jml; i++) {

cout<<"Nim : "<<mhs[i].nim<<endl; cout<<"Nama : "<<mhs[i].nama[i]<<endl; }

Referensi

Dokumen terkait

Pengaruh Strategi Diferensiasi dan Positioning Produk Terhadap Motivasi Nasabah ( Studi Kasus Pada Produk Tabungan Investa Cendekia di BSM KCP Banyumanik2. Semarang )

Oleh karena itu, untuk mencegah penyakit HDB perlu dilakukan penyediaan benih yang bebas Xoo serta pemahaman mengenai waktu tanam yang sesuai dengan perkembangan penyakit Xoo

Reducing levels of ROS allows ”uchu to interrupt the pathogenesis of ”PH by reducing tissue injury, DN“ damage, neoplastic transformation, and activation of growth factors that lead

Yang dimaksud hak-hak yang sesuai dengan perundang-undangan yang berlaku atau hak- hak yang telah diatur dalam perjanjian kerja, peraturan perusahaan, atau perjanjian kerja

Namun secara umum apabila efektivitas kinerja tersebut dikaitkan dengan kegiatan pelayanan jasa, suatu kinerja layanan akan dikatakan efektif jika pelanggan merasa puas

[r]

[r]

Berdasarkan tahapa seleksi paket Pekerjaan Penyusunan Inventarisasi dan Pemetaan Perumahan Tidak Layak Huni Di Kabupaten Indragiri HiliR , Pada Unit Layanan Pengadaan (ULP)