Lompat ke konten Lompat ke sidebar Lompat ke footer

Pointer pada Struktur Data

Pointer pada Struktur Data

  • Pointer adalah suatu variabel penunjuk, berisi nilai yang menunjuk alamat suatu lokasi memori tertentu.
  • Jadi pointer tidak berisi nilai data, melainkan berisi suatu alamat memori atau null jika tidak berisi data.
  • Pointer yang tidak diinisialisasi disebut dangling pointer.
  • Lokasi memori tersebut bisa diwakili sebuah variabel atau dapat juga berupa nilai alamat memori secara langsung. 


Ilustrasi Pointer.

  • Kita memiliki variabel X yang berisi nilai karakter ‘a’
  • Oleh kompiler C, nilai ‘a’ ini akan disimpan di suatu alamat tertentu di memori.
  • Alamat variabel X dapat diakses dengan menggunakan statemen &X.
  • Jika kita ingin menyimpan alamat dari variabel X ini, kita dapat menggunakan suatu variabel
    • misalnya char alamat_x = &X;
  • alamat_x adalah suatu variabel yang berisi alamat dimana nilai X, yaitu ‘a’ disimpan.  
  • Variabel alamat_x disebut variabel pointer atau sering disebut pointer saja.


Pointer dideklarasikan dengan cara: 
tipe_data *nama_variabel_pointer;


Contoh inisialisasi pointer
#include <stdio.h>
#include<conio.h>

int main() {
float nilai, *alamat=&nilai;
nilai=25.2;
printf("nilai %.2f berada di alamat memori %p atau %x dalam hexa\n", nilai, alamat, alamat);
printf("isi nilai dari pointer alamat adalah %.2f",*alamat);
getch();
}



Ketentuan Pointer.

  • variabel pointer dapat dideklarasikan dengan tipe data apapun.
  • Pendeklarasian variabel pointer dengan tipe data tertentu digunakan untuk menyimpan alamat memori yang berisi data sesuai dengan tipe data yang dideklarasikan, bukan untuk berisi nilai bertipe data tertentu.
  • Tipe data digunakan sebagai lebar data untuk alokasi memori (misal char berarti lebar datanya 1 byte, dst)
    • jika suatu variabel pointer dideklarasikan bertipe float, berarti variabel pointer tersebut hanya bisa digunakan untuk menunjuk alamat memori yang berisi nilai bertipe float juga.

Operasi pada Pointer.

Operasi assignment

  • Contoh 1: Assignment dan sebuah alamat dapat ditunjuk oleh lebih dari satu pointer
  • Contoh 2: Mengisi variabel dengan nilai yang ditunjuk oleh sebuah variabel pointer 
  • Contoh 3: Mengoperasikan isi variabel dengan menyebut alamatnya dengan pointer 
  • Contoh 4: Mengisi dan mengganti variabel yang ditunjuk oleh pointer 

Operasi aritmatika

  • Pada pointer dapat dilakukan operasi aritmatika yang akan menunjuk suatu alamat memori baru.
  • Hanya nilai integer saja yang bisa dioperasikan pada variabel pointer.
  • Biasanya hanya operasi penambahan/pengurangan saja.
  • Misal pointer X bertipe int  (2 bytes), maka X+1 akan menunjuk pada alamat memori sekarang (mis. 1000) ditambah sizeof(X), yaitu 2, jadi 1002.

Pointer pada Array

  • Pada array, pointer hanya perlu menunjuk pada alamat elemen pertama saja karena letak alamat array sudah berurutan pada memori.
  • Variabel pointer hanya perlu increment