Assalamualaikum Wr. Wb.

Selamat pagi Sobat C,

Berjumpa lagi dengan saya Ilham dalam percobaan ke 9.Ga terasa ya udah cepet aja nyampe 9.Iya begitulah Sob kita semakin dikejar oleh waktu jadinya semuanya pun terlihat begitu singkat.Baik langsung saja, berikut penjelasan mengenai variabel pointer.

 

1). Tujuan 

mempelajari penggunaan variabel pointer dengan perpaduan variabel lain, penggunaannya dengan fungsi, serta penunjukan pointer oleh pointer lain.

2). Teori

pointer adalah  penunjuk suatu variabel. Karena menunjuk suatu variabel, maka pointer wajib memiliki alamat dari variabel yang ditunjuknya. Kadangkala dalam program yang besar, penghematan memori wajib untuk dilakukan. Dengan mekanisme copy dan paste nilai variabel satu kedalam variabel lain, akan sangat memboroskan memori. Dengan mekanisme pointer, suatu variabel dalam suatu fungsi dapat diakses oleh fungsi yang lain.

3). Program Percobaan

  • Mengakses isi suatu variable melalui 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();

}

  • Mengamati persamaan penggunaan variable index pada array dan variable index pada pointer

/* 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();

}

 

  • Pointer yang menunjuk ke 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();

}

 

  • 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;

}

  • fungsi mempunyai nilai balik bertipe pointer

/* 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();

}

 

  • Penggunaan fungsi *strlwr(str)

/* 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();

}

Terima kasih mungkin itu saja  yang dapat saya sampaikan Semoga bermanfaat, kurang lebihnya saya mohon maaf.

Terus belajar dan perdalam ilmumu tentang bahasa yang seru C ini kawan.

Wassalamualaikum Wr. Wb