PROGRAM STUDI TEKNIK INFORMATIKA SEKOLAH TINGGI MANAJEMEN INFORMATIKA DAN KOMPUTER AMIKOM PURWOKERTO
2013 POINTER DALAM STRUKTUR DATA DINAMIS Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari suatu variabel lain. Bentuk Umum: tipe_data *nama_pointer; Contoh: int *nilai; char *huruf; Pendeklarasian variabel pointer menggunakan tanda * sebelum nama variabelnya. Sedangkan untuk menampilkan nilai yang ditunjuk oleh suatu variabel pointer, juga digunakan operator * Untuk menampilkan alamat tempat penyimpanan nilai yang ditunjuk oleh suatu variabel pointer, digunakan operator & Struktur data dinamis adalah struktur data yang dapat bertambah maupun berkurang sesuai dengan kebutuhan di saat program berjalan. Struktur data dinamis dapat mengalokasikan blok-blok memori sesuai dengan yang diinginkan dalam program yang dirangkai (link) dengan menggunakan struktur pointer. Bila blok memori tidak digunakan lagi, maka blok memori tersebut dilepas untuk keperluan lain. Contoh Program 1: #include <stdio.h> #include <stdlib.h> void main() { int *p; p=(int *) malloc (sizeof(int)); *p=10; printf("%d\n",*p); free(p); } outputnya
Perintah malloc digunakan untuk mengalokasikan memori dengan jumlah tertentu, dalam hal ini adalah ukuran memori dari integer, yaitu 4 byte. Type casting dilakukan supaya mengubah pointer generic (pointer void) yang dihasilkan oleh malloc menjadi pointer integer. Fungsi free digunakan untuk melepaskan blok memori yang tidak digunakan. Parameter dari sizeof() adalah sebuah obyek atau sebuah tipe data. Contoh Program 2: #include <stdio.h> #include <conio.h> #include <stdlib.h> struct rec { int i; float f; char c; }; void main() { struct rec *p; p=(struct rec *) malloc (sizeof(struct rec)); (*p).i=10; (*p).f=3.14; (*p).c='a'; printf("%d %f %c\n",(*p).i,(*p).f,(*p).c); free(p); getch(); } Outputnya
Seperti dalam operator (tanda operasi) pada umumnya, masing-masing memiliki derajat (precedence). Dalam bahasa C, tanda . memiliki derajat lebih tinggi dari pada tanda *. Oleh karena itu maka*p harus berada di dalam tanda kurung. Contoh Program 3: #include <stdio.h> #include <conio.h> #include <stdlib.h> void main() { int *a; int b; a=&b; b=10; printf(" Nilai b : %d \n", b); printf(" Alamat b : %p \n\n", &b); printf(" Niai A : %p \n", a); printf(" Alamat A : %p \n", &a); printf(" Niali rujukan A : %d \n\n", *a); a=(int *)malloc(sizeof(int)); // --> memasukan alamat pada memori swap *a=25; // free(a); --> menghapus alamat kosong dari a di swap printf(" Niai A : %p \n", a); printf(" Alamat A : %p \n", &a); printf(" Niali rujukan A : %d \n\n", *a); a=(int *)malloc(sizeof(int)); // --> memasukan alamat pada memori swap *a=35; printf(" Niai A : %p \n", a); printf(" Alamat A : %p \n", &a); printf(" Niali rujukan A : %d \n\n", *a); printf("\n\n"); getch(); } Output Program