You are on page 1of 21

POINTER

DASAR PEMROGRAMAN

Tujuan
Setelah menyelesaikan bab ini,
anda diharapkan dapat:

Menjelaskan tentang konsep dari variabel pointer


Menjelaskan tentang pointer array
Menjelaskan tentang pointer string
Menjelaskan tentang array dari pointer
Menjelaskan tentang pointer sebagai parameter
fungsi

Dasar Pointer
Variabel pointer sering dikatakan sebagai variabel

yang menunjuk ke obyek lain.


Variabel pointer berisi alamat dari suatu obyek lain.
Sebagai contoh, px adalah variabel pointer dan x
adalah variabel yang ditunjuk oleh px. Kalau x
berada pada alamat memori (alamat awal) 1000,
maka px akan berisi 1000

Variabel Pointer px menunjuk ke variabel x

xxxx

1000

px = &x;

address
1000

px

Deklarasi Variabel Pointer


Bentuk umum:

tipe_data *nama_variabel_pointer;
Contoh:

int *px;

Operator tak langsung

Mengatur pointer agar menunjuk ke variabel lain:

px = &x;
Mengakses isi suatu variabel melalui pointer:

y = *px;
5

Variabel Pointer
*px isi dari alamat memory yang ditunjuk

variabel px.
&x alamat memory dari variabel x.

Contoh #1
#include <stdio.h>
Alamat x
main()
Isi px
{
Isi x
int y, x = 87;
Nilai px
int *px;
Nilai y
px = &x;
y = *px;
printf("Alamat x
= %p\n", &x);
printf("Isi px
= %p\n", px);
printf("Isi x
= %d\n", x);
printf("Nilai yang ditunjuk oleh px
*px);
printf("Nilai y
= %d\n", y);
}

=
=
=
=
=

0012FF78
0012FF78
87
87
87

= %d\n",

Isi dari pointer


(alamat memory)
7

Analisa
Pada program di atas, dua pernyataan

px = &x;
y = *px;
sebenarnya dapat digantikan dengan sebuah pernyataan

berupa

y = x;
Seandainya pada program di atas tidak terdapat pernyataan

px = &x;
namun terdapat pernyataan

y = *px;
mengakibatkan komputer tidak dapat dikendalikan (hang).

Contoh #2
#include <stdio.h>
main()
{
Tipe pointer dan obyek yang
int *pu;
ditunjuk harus sejenis
int nu;
int u = 1234;
pu = &u;
nu = *pu;
printf("Alamat dari u = %p\n", &u);
printf("Isi pu
= %p\n", pu);
printf("Isi u
= %d\n", u);
printf("Nilai yang ditunjuk pu = %d\n", *pu);
printf("Nilai nu
= %d\n", nu);
}

Mengubah isi variabel pointer


- Contoh #3 #include <stdio.h>
main()
{
int d = 100;
int *pd;
printf("Isi d mula-mula = %d\n", d);
pd = &d;
*pd = *pd + 10;
printf("Isi d sekarang = %d\n", d);
}
Isi d mula-mula
Isi d sekarang

= 54.5
= 64.5
10

Pointer dan Array


Array secara internal akan diterjemahkan dalam bentuk pointer.
Deklarasi variabel:

int tgl_lahir[3] = { 01, 09, 64 };


int *ptgl;
Kemudian diberi instruksi:
ptgl = &tgl_lahir[0];
maka ptgl akan berisi alamat dari elemen array tgl_lahir
yang berindeks nol.
Instruksi di atas bisa juga ditulis menjadi:
ptgl = tgl_lahir;
nama array tanpa tanda kurung menyatakan alamat awal dari
array.

11

Contoh #4
/* Program : ptr6.c */
#include <stdio.h>
main()
{
static int tgl_lahir[] = {16, 4, 1974};
int i, *ptgl;
ptgl = tgl_lahir;
printf("Nilai yang ditunjuk ptgl = %d\n", *ptgl);
for (i=0; i<3; i++)
printf(" %d\n", tgl_lahir[i]);
}

Keterangan :
tgl_lahir[i] bisa diganti dengan *(ptgl+i)

atau *ptgl++

12

Pointer dan String


Pointer juga dapat digunakan untuk mendeklarasikan variabel

string.
Contoh:
char *pkota = SEMARANG;
Hampir sama dengan:

char kota[] = SEMARANG;


Tetapi sebenarnya tidak tepat sama.

pkota adalah pointer (menyatakan alamat) yang


menunjuk ke string SEMARANG,
kota adalah array (array menyatakan alamat yang
konstan, tak dapat diubah).

13

Contoh #5
/* Program : ptr4.c */
#include <stdio.h>
main()
{
// pkota menunjuk konstanta string SEMARANG
char *pkota = SEMARANG;
printf(String yang ditunjuk oleh pkota = );
puts(pkota); // printf(%s\n, pkota)
}
Hampir sama dengan sbb :

char *pkota;
char data [] = SEMARANG;
pkota = data;
printf (%c\n,*pkota);

14

Array dari Pointer (Array of


Pointer)
Suatu array bisa digunakan untuk menyimpan sejumlah pointer.
Contoh :
char *namahari[10];
Array namahari terdiri dari 10 elemen berupa pointer yang menunjuk
ke data bertipe char.

?
?
?
?
?

xxxx

namahari
Gambar Array pointer

15

Array of Pointer Cont.


static char *namahari[] =
{Senin,
Selasa,
Rabu,
Kamis,
Jumat,
Sabtu,
Minggu};
Pada contoh ini,
namahari[0] berisi alamat yang menunjuk ke string Senin.
namahari[1] berisi alamat yang menunjuk ke string Selasa.
namahari[2] berisi alamat yang menunjuk ke string Rabu.
dan sebagainya.

16

Contoh Array of Pointer


#include <stdio.h>
main()
{
static char *namahari[] =
{"Senin",
"Selasa",
"Rabu",
"Kamis",
"Jumat",
"Sabtu",
"Minggu"};
int hari;
printf("Hari 1..6 : ");
scanf("%d", &hari);
printf("Hari ke-%d adalah %s\n", hari,namahari[hari-1]);
}

17

Pointer Dalam Fungsi


- Pointer sebagai Parameter Fungsi
Penerapan pointer sebagai parameter yaitu jika diinginkan agar nilai

suatu variabel internal dapat diubah oleh fungsi yang dipanggil.


/* Program : argptr.c
Fungsi dengan argumen berupa pointer */
#include <stdio.h>
void naikkan_nilai(int *, int *);
main()
{
int a = 3, b = 7;
printf("SEMULA : a = %d b = %d\n", a, b);
naikkan_nilai(&a, &b);
printf("KINI
: a = %d b = %d\n", a, b);
}
void naikkan_nilai(int *x, int *y)
{
*x = *x + 2;
*y = *y + 2;
}

18

Analisa Program
Fungsi di atas dimaksudkan agar kalau dipanggil, variabel yang

berkenaan dengan parameter aktual dapat diubah nilainya, masingmasing dinaikkan sebesar 2. Contoh pemanggilan :
naikkan_nilai(&a, &b);
Perhatikan, dalam hal ini variabel a dan b harus ditulis diawali operator

alamat (&) yang berarti menyatakan alamat variabel, sebab parameter


fungsi dalam pendefinisian berupa pointer.
void naikkan_nilai(int *x, int *y);

19

- Pointer sebagai Keluaran Fungsi


Suatu fungsi dapat dibuat agar keluarannya berupa pointer.
Contoh :
Fungsi yang menghasilkan keluaran yang menunjuk ke string nama-nama bulan.
#include<stdio.h>
char *nama_anak[int n];
main()
{
int i;
printf(Pilih anak ke(1..4) = );
scanf(%d,i);
printf(%s\n,nama_anak(i));
}
char *nama_anak(int n)
{
static char *anak[]=
{Kode anak salah.
Adya,Mita,Sigit,Khoir
};
}

20

LATIHAN
1. Buat program untuk menampilkan sebaris string
seperti contoh berikut ;
Selamat Pagi
menggunakan variable pointer (pointer to string),
kemudian tampilkan karakter per karakter.
2. Buat potongan program untuk mencetak
huruf ketiga ( L ) dari kata :
P O L I T E K N I K
dengan menggunakan variabel pointer .

21

You might also like