Assalamualaikum Boskuuhh pada kesempattan kali ini saya akan membahas tentang VARIABEL POINTER & PENGGUNAANYA DALAM FUNGSI, tujuan dari pembahasan ini adalah mempelajari penggunaan variable pointer yang dipadukan dengan variable bertipe integer. array dan string serta penggunaan pointer dalam suatu fungsi, baik sebagai penunjuk fungsi atau sebagai argument fungsi. Suatu pointer adalah suatu variable yang menyimpan alamat dari suatu variable yang ditunjuk oleh pointer yang bersangkutan. Karena data yang ditunjuk oleh pointer bervariasi, maka tipe dari pointer harus disesuikan dengan tipe data yang ditunjuk, untuk memperkirakan ukuran 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 dan variable array.

Percobaan pembuatan program:

1. Berikut percobaan program menggunakan pointer yang pertama

#include<stdio.h>

void main()
{
int y, x = 2002; /* x & y bertipe int*/
int *px; /*var poiter menunjuk data tipe int*/

px = &x; /*px diisi alamat dari variabelx*/
y = *px; /*y diisi 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();
}

Dan seperti berikut hasilnya:

2. Berikut percobaan program menggunakan pointer yang kedua

#include<stdio.h>

void main()
{

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

printf(“Mencetan 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();
}

Dan seperti berikut hasilnya:

3. Berikut percobaan program menggunakan pointer yang ketiga

#include<stdio.h>

void main()
{

int a,*b, **c;

a = 1945;
b = 5;
c = 6;

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. Berikut percobaan program menggunakan pointer yang keempat

#include<stdio.h>

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

main()
{

int a = 3, b = 7;

printf(“SEMUA :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 + 5;
*y = *y + 10;
}

Dan seperti berikut hasilnya:

5. Berikut percobaan program menggunakan pointer yang kelima

#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 b1;

printf(“Masukkan kode bulan [1..12] : “);
scanf(“%d”, &b1);
printf(“Bulan ke-%d adalah %s\n”, b1, nama_bulan(b1));

getch();
}

Dan seperti berikut hasilnya:

6. Berikut percobaan program menggunakan pointer yang terakhir

#include<stdio.h>
#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 cilik kabeh!!!”);
ptrx = NULL;

puts(“Isi str1 = “); puts(str1);
puts(“Isi str2 = “); puts(str2);
puts(“Isi ptrx = “); puts(ptrx);

ptrx = (char*)calloc(80, sizeof(char));
ptrx = strlwr(str1);
puts(“\nSetelah ‘str1’ diproses dengan strlwr()\n”);
puts(“Isi str1 = “); puts(str1);
puts(“Isi str2 = “); puts(str2);

ptrx = strupr(str2);
puts(“\nSetelah ‘str2’diproses dengan strupr()\n”);
puts(“Isi str2 = “); puts(str2);
puts(“Isi ptrx = “); puts(ptrx);

getch();

}

Dan seperti berikut hasilnya:

TUGAS:

1. Berikut Tugas untuk program menggunakan pointer yang pertama :

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
static int a,b[16],c,d;
char e[16],*f;
menu:
printf(“\n Angka sebelum diurutkan …\n”);
for(a=1;a<13;a++)
{
printf(” Angka ke %d = “,a);
scanf(“%d”,&b[a]);
}
printf(“\n Angka setelah diurutkan …\n”);
for(a=1;a<13;a++)
{
for(d=a+1;d<13;d++)
{
if(*(b+a)>*(b+d))
{
c=*(b+d);
*(b+d)=*(b+a);
*(b+a)=c;
}
}
printf(” Angka ke %d = %d\n”,a,*(b+a));
}
printf(“\n Ketik ‘exit’ untuk keluar …\n”);
gets(e);
printf(” “);
gets(e);
f=strlwr(e);
if(strcmp(f,”exit”)==0);
else
{
system(“cls”);
goto menu;
}
}

Dan seperti berikut hasilnya:

2. Berikut Tugas untuk program menggunakan pointer yang terakhir :

#include<stdio.h>
#include<stdlib.h>
#include<string.h>
main()
{
static int a[12][12],b,c,*d,e,f,g;
char h[8],*i;
menu1:
g=1;
for(e=0;e<12;e++)
{
for(f=0;f<12;f++)
a[e][f]=48;
}
menu2:
system(“cls”);
d=&a;
printf(“\n\r”);
for(e=1;e<13;e++)
{
for(f=1;f<13;f++)
printf(“%2c”,*d++);
puts(“”);
}
if(g>1)
{
printf(“\n Ketik ‘lanjut’ untuk melanjutkan.”);
printf(“\n Ketik ‘ulang’ untuk mengulang dari awal.”);
printf(“\n Ketik ‘exit’ untuk keluar.\n “);
gets(h);
gets(h);
i=strlwr(h);
if(strcmp(i,”lanjut”)==0)
{
g=1;
goto menu2;
}
else if(strcmp(i,”ulang”)==0)
goto menu1;
else if(strcmp(i,”exit”)==0);
else goto menu2;
}
else
{
g++;
printf(“\n Masukkan koordinat matrix dengan jarak 1 – 12 …\n “);
scanf(“%d%d”,&c,&b);
–b;
–c;
a[b][c]=120;
goto menu2;
}
}

Dan seperti berikut hasilnya:

Sekian dari pembahasana saya, apabila ada salah kata dari pembahasan diatas mohon dimaafkan. Terimakasih 😀