Rabu, 20 April 2011

Pointer

Berikut adalah contoh pointer didalam pemrograman bahasa C :


Contoh 1
/* --------------------------- */
/* file program : ARGPTR.C */
/* contoh fungsi dengan argumen berupa pointer */
/* -----------------------------------------------------*/
#include "stdio.h"
void naikkan_nilai(int *x,int *y);

main()
{
 int a=3;
 int b=7;

 printf("Semula a=%d b=%d\n",a,b);

 naikkan_nilai(&a,&b);
 printf("Kini : a=%d b=%d\n",a,b);
 getch();
}
void naikkan_nilai(int *x,int *y)
{
 *x=*x+2;
 *y=*y+2;
}
Contoh 2
/* ---------------------------------------------- */
/* file program : ARR-NAMA.C */
/* menukarkan isi dua buah string */
/* tanpa pemakaian pointer */
/* ---------------------------------------------- */

#include "stdio.h"
#include "string.h"

#define PANJANG 20

/* ---isi nama1 dan nama2 semula--- */
char nama1[PANJANG]="JAMES BOAND";
char nama2[PANJANG]="HERCULE POIROT";

main()
{
 char namax[PANJANG];

 puts("SEMULA: ");
 printf("nama1 --> %s\n",nama1);
 printf("nama2 --> %s\n",nama2);

 /* penukaran string */
 strcpy(namax,nama1);
 strcpy(nama1,nama2);
 strcpy(nama2,namax);

 puts("KINI: ");
 printf("nama1 --> %s\n",nama1);
 printf("nama2 --> %s\n",nama2);
 getch();
}
Contoh 3
/* ---------------------------- */
/* file program : PTR1.C  */
/* contoh pemakaian pointer  */
/* ---------------------------- */

#include "stdio.h"

main()
{
 int x,y;    /* x & y bertipe int  */
 int *px;    /* px pointer yang menunjuk objek bertipe int */
 x=87;
 px=&x;      /* px berisi alamat dari x */
 y=*px;      /* y berisi nilai yang ditunjuk px */
 clrscr();

 printf(" Alamat x = %p\n",&x);
 printf("isi px = %p\n",px);
 printf("isi x  = %d\n",x);
 printf("Nilai yang ditunjuk oleh px = %d\n",*px);
 printf("Nilai y = %d\n",y);
 getch();
}
Contoh 4
/***********************************************/
/* file program: PTR2.C */
/* contoh  pemakaian pointer yang salah */
/************************************************/
#include "stdio.h"

main()
{
 float *pu;
 float nu;
 int u=1234;
 clrscr();

 pu=&u;  /* pernyataan ini salah */
   /* sebab pu adalah pointer float */
   /* padahal u bertipe int */
 nu=*pu;
 printf("u=%d\n",u);
 printf("nu=%f\n",nu);
 getch();
}
Contoh 5
/* ----------------------------- */
/* file program : PTR3.C */
/* contoh pengubah isi suatu variabel */
/* melalui pointer */
/* ----------------------------- */
#include "stdio.h"

main()
{
 float d, *pd;
 d=54.5;
 clrscr();

 printf("isi d semula = %g\n",d);

 pd=&d;
 *pd=*pd+10;
 printf("isi d kini = %g\n",d);
 printf("isi pd=%d  dan isi &d=%d\n",pd,&d);

 /******--------------argumenku bozz------------**********************/
 puts("");
 printf("proses pd=&d adalah proses dalam pointer yang menunjukan\n");
 printf("bahwa pd berisi alamat dari d, tentu hasil pd=&d tidak\n");
 printf("seperti aslinya d=54.5 tetapi malah -56 ini adalah\n");
 printf("proses dalam pointer bila ingin mengaksesnya\n");
 printf("pakeklah tanda (*) yaitu (*pd) baru *pd hasilnya benar (*pd=54.5)\n");
 getch();
}
Contoh 6
/* ----------------------------- */
/* file program: PTR4.C */
/* contoh pointer yang menunjuk array */
/* ------------------------------ */
#include "stdio.h"
main()
{
 static int tgl_lhr[]= {24,6,1965};

 int *ptgl;
 clrscr();

 ptgl=tgl_lhr;  /* ptgl berisi alamat array */

 printf("Nilai yang ditunjuk oleh ptgl= %d\n",*ptgl);
 printf("Nilai dari tgl_lahir[0]      = %d\n",tgl_lhr[0]);
 getch();
}
Contoh 7
/* ----------------------------- */
/* file program: PTR5.C */
/* pengaksesan isi array */
/* dengan memakai pointer */
/* ------------------------------ */
#include "stdio.h"
main()
{
 static int tgl_lhr[]= {24,6,1965};

 int *ptgl;
 int i;
 clrscr();

 ptgl=tgl_lhr;  /* ptgl berisi alamat array */

 for(i=0;i<3;i++)
  printf("%d\n", *(ptgl+i));
 getch();
}
Contoh 8
/* -------------------------------- */
/* File program: PTR6.C             */
/* Pengaksesan isi array            */
/* dengan memakai pointer (versi 2) */
/* -------------------------------- */
#include 


main()
{
   static int tgl_lahir[] = { 24, 6, 1965 };

   int i;
   int *ptgl;
   clrscr();

   ptgl = tgl_lahir;  /* ptgl berisi alamat array */
   for(i=0; i<3; i++)
   printf("%d\n", *ptgl++ );
   getch();
}
Contoh 9
/* --------------------------------------------------- */
/* fie program : PTRBULAN.C */
/* contoh fungsi dengan keluaran   */
/* berupa pointer yang menunjuk string */
/* --------------------------------------------------- */
#include "stdio.h"
char *nama_bulan(int n);
main()
{
 int bl;

 printf("Bulan (1...12): ");
 scanf("%d",&bl);
 printf("%s\n",nama_bulan(bl));
 getch();
}
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]);
}
Contoh 10
/* ------------------------------------------- */
/* file program : PTRKOTA.C */
/* contoh pointer yang menunjuk data string */
/* --------------------------------------------- */
#include "stdio.h"

main()
{
 char *pkota = "SEMARANG";   /*pkota menunjuk */
        /* konstanta string "SEMARANG"*/
 puts(pkota);
 getch();
}
Contoh 11
/* ---------------------------------------------- */
/* file program : PTR-NAMA.C */
/* menukarkan isi dua buah string */
/* yang diunjuk oleh pointer */
/* ---------------------------------------------- */

#include "stdio.h"
#include "string.h"

/* ---isi nama1 dan nama2 semula--- */
char *nama1="JAMES BOAND";
char *nama2="HERCULE POIROT";

main()
{
 char *namax;

 puts("SEMULA: ");
 printf("nama1 --> %s\n",nama1);
 printf("nama2 --> %s\n",nama2);

 /* penukaran string yang ditunjuk oleh pointer nama1 dan nama2 */
 namax=nama1;
 nama1=nama2;
 nama2=namax;

 puts("KINI: ");
 printf("nama1 --> %s\n",nama1);
 printf("nama2 --> %s\n",nama2);
 getch();
}
Contoh 12
/* --------------------------------- */
/* file program : PTRPTR.C */
/* contoh pointer yang menunjuk pointer */
/* ---------------------------------- */

#include "stdio.h"

main()
{
 int var_x=273;   /* variabel int */
 int *ptr1;   /* pointer int */
 int **ptr2;  /* pointer menunjuk kepointer int */

 ptr1=&var_x;  /* ptr1 berisi alamat dari var_x */
 ptr2=&ptr1;   /* ptr2 berisi alamat dari ptr1 */
 clrscr();

 /* mengakses nilai var_x melalui ptr1 */
 printf("Nilai var_x=%d\n",*ptr1);

 /* mengakses nilai var_x melalui ptr2 */
 printf("Nilai var_x=%d\n",**ptr2);
 getch();
}

Sumber : Abdul Kadir, 2003 Pemrograman Dasar Turbo C untuk IBM PC.

0 komentar:

Posting Komentar

 
Design by Free WordPress Themes | Bloggerized by Lasantha - Premium Blogger Themes | Justin Bieber, Gold Price in India