TUJUAN

  • Mempelajaari penggunaan variable pointer yang dipadukan dengan variabel bertipe integer, array dan string serta penggunaan pointer dalam suatu fungsi, baik sebagi petunjuk fungsi atau sebagai argumen fungsi.
  • Mempelajari pointer untuk menunjuk pointer lain.

TEORI

Suatu pointer adalah suatu variable yang menyimpan alamat dari suatu variable yang ditunjuk oleh pointer yang bersangkutan. Karena data yang ditunjuk pointer bervariasi, maka tipe dari pointer harus disesuaikan dengan data yang ditunjuk. Untuk memperkirakan ukuran data data yang ditunjuk, sehingga alokasi memori terjaga dengan baik. Pointer berguna untuk mentransfer data yang mempunyai kapasitas besar, melalui suatu fungsi. Pointer sangat erat kaitannya dengan array, sehingga variable pointer dapat menggantikan fungsi dari variable array.

PROGRAM PERCOBAAN

  1. Mengakses isi suatu pointer.

/* Nama File : POINTER1.C */

void main()

{

int y, x = 2002;      /* x & y bertipe int */

int *px;              /* var pointer menunjuk data tipe int */

px = &x;              /* px diisi alamat dari variabel x */

y = *px;              /* y diisi nilai yang ditunjuk oleh px */

 

printf(“Alamat x               = %p\n”, &x);

printf(“Isi px                       = %p\n”, px);

printf(“Isi x                         = %d\n”, x);

printf(“Nilai *px                = %d\n”, *px);

printf(“Nilai y                     = %d\n”, y);

 

getch();

}

 

  1. Mengamati persamaan penggunaan variable index pada array dan variable index pada pointer, untuk menunjukan suatu nilai data dalam satu variable array.

/* Nama File : STRING2.C */

 

void main()

{

int nilai[10]={86,75,98,66,56,76,80,95,70,60};

int index, *ip;

 

printf(“Mencetak menggunakan array\n”);

printf(“Daftar nilai siswa\n\n”);

for(index=0; index<10; index++)

printf(“%3d”,nilai[index]);

 

puts(“\n”);

printf(“Mencetak menggunakan pointer dan index\n”);

printf(“Daftar nilai siswa\n\n”);

for(index=0; index<10; index++)

printf(“%3d”,*(nilai+index));

 

puts(“\n”);

printf(“Mencetak menggunakan pointer\n”);

printf(“Daftar nilai siswa\n\n”);

ip=&nilai;

for(index=0; index<10; index++)

printf(“%3d”,*ip++);

 

getch();

{

 

  1. Pointer yang menunjuk pointer lain.

/* Program : POINTER3.C */

 

void main()

{

int a, *b, **c;

 

a = 1975;

b = &a;

c = &b;

 

printf(“Nilai a = %d atau %d atau %d\n”, a, *b, **c);

printf(“b = %p = alamat a di memori\n”, b);

printf(“c = %p = alamat b di memori\n”, c);

printf(“alamat c di memori = %p\n”, &c);

 

getch();

}

  1. Fungsi dengan argumen berupa pointer.

/* Nama File : POINTER4.C */

 

void naikkan_nilai(int *x, int *y);

 

main()

{

int a = 3, b = 7;

 

printf(“SEMULA      : a = %d  b = %d\n”, a, b);

naikkan_nilai(&a, &b);

printf(“SEKARANG : a = %d  b = %d\n”, a, b);

getch();

}

 

void naikkan_nilai(int *x, int *y)

{

*x = *x + 2;

*y = *y + 3;

}

 

  1. Suatu fungsi dapat mempunyai nilai balik bertipe pointer, sehingga dapat digunakan untuk mengembalikan nilai yang panjang seperti halnya suatu string.

/* Nama File : POINTER5.C */

 

#include <stdio.h>

 

char *nama_bulan(int n)

{

static char *bulan[] = {

“Kode bulan salah”,

“Januari”,”Februari”,”Maret”,”April”,”Mei”,”Juni”,

“Juli”,”Agustus”,”September”,”Oktober”,”November”,

“Desember”

};

 

return ((n<1||n>12) ? bulan[0] : bulan[n]);

}

 

void main()

{

int bl;

 

printf(“Masukkan kode Bulan [1..12] : “);

scanf(“%d”, &bl);

printf(“Bulan ke-%d adalah %s\n”, bl, nama_bulan(bl));

 

getch();

}

 

  1. Penggunaan fungsi *strlwr(str) yang digunakan untuk mengubah dari string huruf BESAR menjadi huruf kecil, dan fungsi strupr() yang digunakan untuk sebaliknya.

/* Nama File : POINTER6.C */

 

#include <stdlib.h>

#include<string.h>

 

void main()

{

char str1[80], str2[80], *ptrx;

 

strcpy(str1,”INI ADALAH HURUF BESAR SEMUA!!!”);

strcpy(str2,”ini adalah huruf kecil semua!!!”);

ptrx = NULL;

 

cputs(“Isi str1 = “); puts(str1);

cputs(“Isi str2 = “); puts(str2);

cputs(“Isi ptrx = “); puts(ptrx);

 

ptrx = (char *) calloc(80, sizeof(char));

ptrx = strlwr(str1);

puts(“\nSeletelah ‘str1’ diproses dengan strlwr()\n”);

cputs(“Isi str1 = “); puts(str1);

cputs(“Isi ptrx = “); puts(ptrx);

 

ptrx = strupr(str2);

puts(“\nSeletelah ‘str2’ diproses dengan strupr()\n”);

cputs(“Isi str2 = “); puts(str2);

cputs(“Isi ptrx = “); puts(ptrx);

 

getch();

}