• Tidak ada hasil yang ditemukan

BAB XI POINTER - Bab Xi - Pointer - Repository UNIKOM

N/A
N/A
Protected

Academic year: 2019

Membagikan "BAB XI POINTER - Bab Xi - Pointer - Repository UNIKOM"

Copied!
9
0
0

Teks penuh

(1)

DIKTAT MATA KULIAH PEMROGRAMAN I

IF

BAB XI

POINTER

Dasar Teori

Pointer adalah sebuah variabel yang isi datanya adalah alamat memori atau variabel lain.

Sehingga pointer dapat juga disebut sebagai variabel alamat (address variable). Dengan kata lain,

pointer berisi alamat dari variabel yang mempunyai nilai tertentu.

Deklarasi Pointer

Bentuk deklarasi dari pointer adalah sebagai berikut :

tipe_data *nama_variabel ;

Keterangan dari deklarasi diatas adalah sebagai berikut :

tipe_data

:

tipe data dasar dari pointer

nama_variabel :

Nama variabel pointer

*

:

operator memori yang fungsinya untuk mengembalikan nilai

variabel pada alamat

Agar suatu pointer menunjuk ke variabel lain, mula-mula pointer harus diisi dengan

alamat dari variabel yang ditunjuk. Untuk menyatakan alamat dari suatu variabel, digunaan

operator & didepan nama variabel.

jika *x adalah variabel bertipe int, maka pointer px yang berisi

alamat dari variabel x ditulis sebagai :

int *x ;

(2)

Untuk mengakses isi dari suatu variabel melalui pointer, perlu dinyatakan dulu

penunjukkan alamat dari variabel tersebut. Dua pernyataan dibawah ini menunjukkan bahwa

nilai y adalah sama dengan nilai x.

px = &x

pointer px berisi alamat dari variabel x

y = *px

variabel y berisi nilai yang ditunjuk oleh pointer px

Antara tipe pointer dan tipe obyek yang akan ditunjuk oleh pointer haruslah sejenis. Jika

tidak sejenis akan menimbulkan kesalahan. Contoh :

int x ;

x adalah obyek

int *px ;

px adalah pointer yang menunjuk obyek x

Contoh Kasus :

Anda diminta untuk membuatkan program yang akan menampilkan suatu nilai dalam suatu

variabel tertentu dan menampilkan juga alamat suatu pointer yang isinya sama dengan yang

ditunjuk oleh variabel tadi.

Penyelesaian :

Algoritma yang digunakan untuk memecahkan masalah diatas adalah sebagai berikut :

1.

Tentukan variabel yang menampung suatu nilai tertentu, misalkan nilai ini bertipe integer

dan nama variabel nya adalah z. (

misalkan int z

)

2.

Tentukan variabel pointer yang nantinya isinya akan menunjuk pada variabel pada

langkah no.1. (

misalkan variabel *p

)

3.

Tentukan variabel lain yang isinya menunjuk ke variabel pertama dalam langkah no.1.

(

misalkan variabel p dan prosesnya adalah p = &z)

4.

Masukan suatu nilai yang disimpan pada variabel z

5.

Tampilkan nilai tersebut

6.

Tampilkan memori yang tepat untuk menyimpan variabel pointer yang sesuai dengan

(3)

Implementasi dari kasus diatas adalah :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 /* Program 11-1

Nama File : Program 11-1.c Programmer : Eko Budi Setiawan */

#include <stdio.h> #include <stdlib.h>

int main(int argc, char *argv[]) {

int z=4,*p;

p=&z; // penugasan

printf("Nilai z = %d \n",z); printf("Nilai *p = %d \n", *p); printf("Alamatnya = %p \n", p); system("PAUSE"); return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 /* Program 11-1

Nama File : Program 11-1.cpp Programmer : Eko Budi Setiawan */

#include <cstdlib> #include <iostream>

using namespace std;

int main(int argc, char *argv[]) {

int z=4; int *p; p = &z;

cout<<"Nilai z = "<<z<<endl; cout<<"Nilai *p = "<<*p<<endl; cout<<"Alamatnya = "<<p<<endl<<endl; system("PAUSE");

(4)

Gambar 11.1 Tampilan Program 11-1

Pointer dan Array

Sebagai contoh didefinisikan sebuah array untuk menyimpan data tanggal lahir sebagai

berikut :

int tgl_lahir [3] = {16, 10, 1993};

int *ptgl_lahir ; // pointer yang akan menunjuk array tsb

Maka pointer yang ditugaskan terhadap variabel array tersebut adalah sebagai berikut :

ptgl_lahir = tgl_lahir;

atau

ptgl_lahir = &ptgl_lahir [indeks];

ptgl_lahir = &tgl_lahir [0];

Penjelasannya adalah : Pointer ptgl_lahir berisikan alamat dari array tgl_lahir yang ke 0

(alamat pertama dari array tgl_lahir). Jika ingin menampilkan seluruh elemen array tlg_lahir,

instruksi yang biasa dilakukan adalah berupa :

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

printf (“%d”, tgl_lahir[i]);

Instruksi diatas, jika menggunakan pointer dapat dirubah menjadi :

ptgl_lahir = tgl_lahir;

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

(5)

Untuk lebih jelasnya, dapat dilihat contoh dibawah ini :

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 /* Program 11-2

Nama File : Program 10-2.c Programmer : Eko Budi Setiawan */

#include <stdio.h> #include <stdlib.h>

int main(int argc, char *argv[]) {

int tgl_lahir[]={31,12,1999}; int *ptgl_lahir, i;

ptgl_lahir=tgl_lahir; for (i=0; i<3; i++) {

printf("Nilai Ke - %d = %d\n", i+1, *ptgl_lahir); printf("Alamat Ke - %d = %p\n", i+1, ptgl_lahir); ptgl_lahir++;

// bisa juga seperti ini

// printf("Nilai Ke - %d = %d\n", i+1, *(ptgl_lahir+i)); // printf("Nilai Ke - %d = %d\n", i+1, (ptgl_lahir+i)); printf("\n"); } system("PAUSE"); return 0; } 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 /* Program 11-2

Nama File : Program 11-2.cpp Programmer : Eko Budi Setiawan */

#include <cstdlib> #include <iostream>

using namespace std;

int main(int argc, char *argv[]) {

int tgl_lahir[]={31,12,1999}; int *ptgl_lahir, i;

ptgl_lahir=tgl_lahir; for (i=0; i<3; i++) {

(6)

20 21 22 23 24 25

ptgl_lahir++; cout<<"\n"; }

system("PAUSE"); return EXIT_SUCCESS; }

Gambar 11.2 Tampilan Program 11-2

Pointer dan String

Sebagai contoh kasus penggunaan pointer dan string, perhatikan masalah berikut ini.

Misalkan kita diminta untuk menampilkan teks dengan pointer. Maka algoritma untuk menjawab

permasalahan diatas adalah sebagai berikut :

1.

Tentukan variabel pointer yang menampung teks dengan tipenya adalah char (misalkan

*teks)

2.

Tentukan kalimat yang akan ditunjuk oleh pointer

3.

Tampilkan variabel pointer teks, yang isinya sudah menunjuk ke teks

4.

Tampilkan alamat teks tersebut

5.

Selesai

1 2 3 4 5 6 7 8 9 10 11

/*

Program 11-3

Nama File : Program 11-3.c Programmer : Eko Budi Setiawan */

#include <stdio.h> #include <stdlib.h>

int main(int argc, char *argv[]) {

(7)

12 13 14 15 16 17 18

teks="Pointer";

printf("Isi teks = %s\n", teks); printf("Alamat teks = %p\n", &teks); printf("\n");

system("PAUSE"); return 0;

}

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21

/*

Program 11-3

Nama File : Program 11-3.cpp Programmer : Eko Budi Setiawan */

#include <cstdlib> #include <iostream>

using namespace std;

int main(int argc, char *argv[]) {

char *teks; teks="Pointer";

cout<<"Isi teks = "<<teks<<endl;

cout<<"Alamat teks = "<<&teks<<endl;//%p\n", &teks); cout<<"\n";

system("PAUSE"); return EXIT_SUCCESS; }

(8)

Pointer dalam Pointer

C dan C++ juga memperbolehkan penggunaan pointer didalam pointer yang

masing-masing berisi data yang sama atau berbeda. Bentuk umum dari pointer dalam pointer adalah

sebagai berikut :

// deklarasi

tipedata nama_variabel;

tipedata *pointer1; // menunjuk ke variabel

tipedata **pointer2; // menunjuk ke pointer

// penugasan

pointer1 = &nama_variabel;

pointer2 = &pointer1;

Pada kondisi pointer biasa atau pointer tunggal, diagramnya adalah sebagai berikut :

Pointer

Variabel

Sedangkan untu kondisi pointer dalam pointer, diagramnya adalah sebagai berikut :

Pointer

Pointer

Variabel

1 2 3 4 5 6 7 8 9 10 11 12

/*

Program 11-4

Nama File : Program 10-4.c Programmer : Eko Budi Setiawan */

#include <stdio.h> #include <stdlib.h>

int main(int argc, char *argv[]) {

int x, *y, **z;

address

nilai

(9)

13 14 15 16 17 18 19 20

x=5; y=&x; z=&y;

printf("Nilai X = %i\n",**z); printf("Alamat X = %p\n",z); system("PAUSE");

return 0; }

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22

/*

Program 11-4

Nama File : Program 10-4.c Programmer : Eko Budi Setiawan */

#include <cstdlib> #include <iostream>

using namespace std;

int main(int argc, char *argv[]) {

int x, *y, **z; x=5;

y=&x; z=&y;

cout<<"Nilai X = "<<**z<<endl; cout<<"Alamat X = "<<z<<endl; system("PAUSE");

return EXIT_SUCCESS; }

Gambar

Gambar 11.1 Tampilan Program 11-1
Gambar 11.2 Tampilan Program 11-2
Gambar 11.3 Tampilan Program 11-3
Gambar 11.4 Tampilan Program 11-4

Referensi

Dokumen terkait

Penulis menyadari banyak pihak yang telah membantu dalam penyusunan makalah ini.. Maka dengan rendah hati, penulis

purposive sampling serta masyarakat yang dipilih secara acak. Pengumpulan data dilakukan melalui observasi, wawancara serta dokumentasi. Data yang terkumpul dianalisis

Telah diadakan Pemeriksaan Barang sesuai dengan lampiran kontrak kepada Sekretariat Dewan Perwakilan Rakyat Daerah Kabupaten Puncak dan telah diterima dalam keadaan 100% baru, baik

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

Instrumen yang digunakan dalam penelitian aspek kognitif ini berupa tes objektif tentang materi sistem koloid yang terdiri dari 25.. butir soal dengan 5 alternatif

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

 Secara Nasional produksi padi Provinsi Sulawesi Tengah tahun 2015 mempunyai kontribusi sebesar 1,35 persen dari total produksi padi nasional sebesar 75,36 juta ton