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