Percobaan 9

Pengertian Pointer

  • Pointer adalah suatu variabel yang menunjuk ke alamat memory variabel yang lainnya.
  • Suatu pointer bukan berisi dengan suatu nilai data seperti halnya pada variabel biasa, variabel pointer berisi dengan suatu alamat.
  • Untuk mendeklarasikan variabel pointer kita menggunakan tanda asterik / bintang (*) didepan variabel yang di deklarasikan pada tipe data tertentu.
  • Tanda ini juga dapat dipakai untuk mengakses nilai dari variabel yang telah ditunjuk.
  • Untuk mendapatkan alamat dari variabel pointer kita menggunakan tanda &

TUJUAN 

  • Mempelajari penggunaan variabel pointer yang dipadukan dengan variabel integer , array, dan string serta penggunaan pointer dalam suatu fungsi, baik sebagai penunjuk fungsi aau sebagai argument fungsi. Dipelajari juga pointer yang merujuk pada pointer lainnya.

PROGRAM PERCOBAAN 

1.  Untuk  mengakses isi suatu variabel melalui pointer 

void main()

{int y, x + 2002;

int *px;

px = &x;

y = *px;

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

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

peimtf(” isi x = %d\n, x);

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

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

 

2. Mengamati persamaaaan penggunaan variael index pda array dan variabel inde pada pointer, untuk mennunjuk suatu nilai data pada variabel array.

void main().

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

int index, *p;

printf(“Mencerak 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”, *p++);

}

 

3. pointer menunjuk ke pointer lain.

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

}

4. Fungi dengan argumen berupa pointer

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. Suatu fungsi dapat mempunyai nilai balik bertipe pointer, sehingga dapat digunakan untuk mengembalikan nilai yang panjang seperti halnya nilai suatu string.

#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) yang digunakan utnuk mengubah dari string huruf BESAR menjadi huruf kecil, dan fungsi strupr() yang digunakan untuk sebaiknya.

.

#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();

}