Tujuan

  1. Mempelajari penggunaan pointer yang dipadukan dengan variable lain.

 

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.

 

Program Percobaan

  1. 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();

}

——————————————————————————————————————————–

2. 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();

}

——————————————————————————————————————————–

3. 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();

}

——————————————————————————————————————————–

4. 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;

}

——————————————————————————————————————————–

5. 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();

}

——————————————————————————————————————————–

6. 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();

}

 

Tugas

    • Facebook
    • Twitter
    • Google+
    • Pinterest
    • Facebook
    • Twitter
    • Google+
    • Pinterest