Assalamualaikum Warahmatullahi Wabarakatuhh
Sobat redaksi …
Salam Sejahterah untuk kita semua 🙂
Kembali lagi pada pertemuan ke 9 bersama saya Ayu Adista,
Yuk simak sama – sama materi selanjutnya yaitu “Pointer”
Pointer adalah suatu variabel yang berisi alamat memori dari suatu variabel lainnya. Alamat ini merupakan lokasi dari objek lain di dalam memori. Untuk mendeklarasikan sebuah variabel pointer, kita harus menggunakan tanda asterik/bintang ( * ) di depan variabel yang akan dideklarasikan.
Format Penulisan :
tipe_data *nama_variabel;
Untuk mendapatkan alamat dari variabel pointer yang telah dideklarasikan sebelumnya, kita harus menggunakan tanda ampersand (&) didepan variabel pointer tersebut.Format Penulisan :&nama_variabel;
Sedangkan untuk mendapatkan nilai dari variabel pointer yang telah dideklarasikan, kita harus menggunakan tanda asterik ( * ) didepan variabel pointer tersebut.Format Penulisan :*nama_variabel;
Contoh Penulisan :#include <stdio.h>
int main () {
int nilai = 10;
int *nilai2;nilai2 = &nilai;
printf(“Alamat variabel nilai: %x\n”, &nilai );
printf(“Isi variabel nilai2: %d\n”, *nilai2 );getch();
return 0;
}Dipelajari juga pointer yang merujuk pada pointer lainnya.
Dan berikut ini adalah contohnya
- Untuk mengakses isi suatu variabel melalui pointer
#include <stdio.h>
void main()
{
int y, x = 2002;
int *px;
px = &x;
y = *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);
}
- Mengamati persamaaaan penggunaan variael index pda array dan variabel index pada pointer, untuk menunjuk suatu nilai data didalam variabel array.
#include <stdio.h>
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 menunjuk ke pointer lain.
#include <stdio.h>
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);
}
- 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;
}
- 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();
}
- 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();
}
Langsung saja untuk memulai percobaannya
- Menampilkan 12 bilangan dengan menyimpan dalam suatu array, kemudian mengurutkannya
#include<stdio.h>
#include<string.h>
main()
{
static int a,b[16],c,d;
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));
}
}
- Membuat karakter X pada suatu array 12 x 12
#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;
}
}
Jadi bagaimana sobat redaksi, sampai sini tentu paham kan ?
See u dipercobaan selanjutnya …
Salam Redaksi … Hidup MAHASISWA INDONESIA
Recent Comments