Pointer
Pointer dalam C
Pointer adalah variabel yang menyimpan alamat memori dari variabel lain. Pointer memungkinkan kita untuk mengakses dan memodifikasi data secara langsung melalui alamat memori, yang membuat C sangat fleksibel.
Sintaks
tipe_data *nama_pointer;
*
(bintang) ➜ Menunjukkan bahwa variabel adalah pointer.nama_pointer
➜ Variabel yang menyimpan alamat memori.tipe_data
➜ Tipe data yang ditunjuk oleh pointer
Contoh Penggunaan
1. Pointer dasar
#include <stdio.h>
int main() {
int a = 10;
int *ptr = &a; // Pointer menyimpan alamat a
printf("Nilai a: %d\n", a);
printf("Alamat a: %p\n", &a);
printf("Nilai pointer ptr: %p\n", ptr);
printf("Nilai yang ditunjuk pointer: %d\n", *ptr);
return 0;
}
Hasilnya:
Nilai a: 10
Alamat a: 0x7fff31b8128c (alamat bisa berbeda)
Nilai pointer ptr: 0x7fff31b8128c
Nilai yang ditunjuk pointer: 10
ptr = &a;
→ptr
menyimpan alamat daria
.*ptr
→ Dereferensi pointer (mengambil nilai di alamat yang ditunjuk).
2. Pointer dan operasi dereferensi
#include <stdio.h>
int main() {
int a = 5;
int *p = &a; // Pointer p menunjuk ke a
*p = 20; // Mengubah nilai a melalui pointer
printf("Nilai a setelah diubah melalui pointer: %d\n", a);
return 0;
}
Hasilnya:
Nilai a setelah diubah melalui pointer: 20
Pointer bisa digunakan untuk mengubah nilai variabel lain secara langsung.
3. Pointer dan array
#include <stdio.h>
int main() {
int arr[] = {10, 20, 30};
int *ptr = arr; // Pointer ke elemen pertama array
printf("Elemen pertama: %d\n", *ptr);
printf("Elemen kedua: %d\n", *(ptr + 1));
printf("Elemen ketiga: %d\n", *(ptr + 2));
return 0;
}
Hasilnya:
Elemen pertama: 10
Elemen kedua: 20
Elemen ketiga: 30
ptr
menyimpan alamatarr[0]
.ptr + 1
menunjuk kearr[1]
,ptr + 2
kearr[2]
, dst.Pointer bisa digunakan untuk menavigasi array tanpa menggunakan indeks.
4. Pointer ke pointer (double pointer)
#include <stdio.h>
int main() {
int a = 10;
int *p = &a; // Pointer ke int
int **pp = &p; // Pointer ke pointer
printf("Nilai a: %d\n", a);
printf("Nilai melalui *p: %d\n", *p);
printf("Nilai melalui **pp: %d\n", **pp);
return 0;
}
Hasilnya:
Nilai a: 10
Nilai melalui *p: 10
Nilai melalui **pp: 10
p
adalah pointer kea
.pp
adalah pointer yang menunjuk kep
(pointer ke pointer).**pp
memberikan nilai aslia
.
Last updated