Pengenalan Pointer Bahasa C Serta Penjelasannya
Sebelum memahami lebih dalam materi tentang Pengenalan Pointer Bahasa C Serta Penjelasannya, terlebih dahulu pelajari materi tentang: Fungsi Waktu Bahasa C Beserta Penjelasannya, Fungsi TOLOWER pada Bahasa C, dan Fungsi Pangkat pada Bahasa C.
Sintak:
- datatype *var_name; //Deklarsi umum pointer.
- int *ptr; // pointer "ptr" yang menampung nilai alamat dari variabel integer atau menampung alamat memori dari nilai yang dapat diakses sebagai nilai integer sepanjang penggunaan variabel "ptr".
Penggunaan Pointer
Untuk menggunakan pointer pada bahasa C, maka harus dipahami penggunaan dua jenis operator berikut:- Operator '&': Untuk mengakses alamat ari sebuah variabel ke sebuah pointer, maka digunakan operator unary dan operator '&' (ampersand) yang akan mengembalikan nilai alamat dari suatu variabel.
- Operator '*': Satu lagi contoh operator unary adalah '*' (Asterisk) yang digunakan untuk dua hal lain.
- Untuk mendeklarasikan sebuah variabel pointer: ketika sebuah pointer dideklarasikan pada bahasa C, maka harus digunakan operator * sebelum nama pointer tersebut dideklarasikan.
- Untuk mengakses nilai yang disimpan pada alamat suatu variabel: digunakan operator unary '*' yang akan mengembalikan nilai dari lokasi variabel pada alamat tertentu dari nilai operand, atau disebut juga sebagai proses dereferensi.
// Nilai output dari program
// dapat berbeda-beda ketika
// dijalankan. Program akan
// mencetak alamat dari sebuah
// variabel dan sebuah
// variabel juga dapat
// menandai alamat berbdai
// pada progran yang berbeda
// pula ketika program
// tersebut dijalankan.
#include <stdio.h>
int main()
{
int x;
// Mencetak alamat dari
// variabel x.
printf("%p", &x);
return 0;
}
// Program Bahasa C untuk
// mendemonstrasikan proses
// deklarasi dari variabel
// pointer.
#include <stdio.h>
int main()
{
int x = 10;
// 1) Karena terdapat operator
// '*' pada bagian deklarasi,
// maka ptr menjadi sebuah
// variabel pointer atau
// sebuah variabel yang dapat
// digunakan untuk menyimpan
// alamat memori dari variabel
// lainnya.
// 2) Karena terdapat tipe
// data int sebelum operator
// '*', maka ptr adalah
// pointer ke variabel dengan
// tipe data integer.
int *ptr;
// Operator '&' diletakkan
// sebelum variabel 'x' yang
// digunakan untuk mendapatkan
// nilai alamt dari variabel x
// yang ditandai ke ptr.
ptr = &x;
return 0;
}
Ekspresi Pointer dan Aritmatika Pointer
Sebuah kumpulan terbatas dari operasi aritmatika dapat dilakukan dengan menggunakan pointer pada bahasa C, yakni sebagai berikut:- Proses inkrementasi pointer dengan menggunakan operator '++'.
- Proses dekrementasi pointer dengan menggunakan operator '--'.
- Penambahan nilai integer dari sebuah pointer menggunakan operator '+' atau operator '+='.
- Pengurangan nilai integer dari sebuah pointer menggunakan operator '–' atau '-='.
Aritmatika pointer merupakan sesuatu yang tidak akan memiliki makna apapun, melainkan jika digunakan pada variabel tipe array.
Catatan: Pointer merupakan variabel yang mengandung nilai alamat dari variabel lainnya. Menambangkan dua nilai lokasi variabel ke pointer bukan merupakan sesuatu yang sifatnya logis, karena tidak diketahui nilai alamat mana yang harus ditunjuk oleh pointer. Namun demikian, jika dilakukan pengurangan dua alamat dari variabel yang ditunjuk pointer, maka hal tersebut memungkinkan untuk dilakukan proses penghitungan offset antara dua alamat yang dikurangi tersebut.
Contoh:
// Program Bahasa C untuk
// mengilustrasikan aritmatika
// pointer.
#include <bits/stdc++.h>
// Driver program
int main()
{
// Deklarasi Array
int v[3] = {10, 100, 200};
// Deklarasi variabel pointer
int *ptr;
// Menandai alamat dari v[0]
// ke ptr
ptr = v;
for (int i = 0; i < 3; i++)
{
printf("Value of *ptr = %d\n", *ptr);
printf("Value of ptr = %p\n\n", ptr);
// Inkrementasi pointer ptr
// dengan nilai 1
ptr++;
}
}
Output:Value of *ptr = 10
Value of ptr = 0x7ffcae30c710
Value of *ptr = 100
Value of ptr = 0x7ffcae30c714
Value of *ptr = 200
Value of ptr = 0x7ffcae30c718
Nama Array Sebagai Pointer
Nama pada array juga bertindak sebagai suatu konstanta pointer, dimana nilai dari konstanta pointer adalah alamat dari elemen pertama pada array.Jika pointer ptr dikirim ke sebuah fungsi sebagai sebuah argumen, maka array val dapat dilakukan akses dengan cara yang sama pula seperti pada pointer ptr.
Pointer dan Array Multidimensi
Jika notasi pointer digunakan untuk array numerik dua dimensi, maka bentuk deklarasinya adalah berikut: int nums[2][3] = { {16, 18, 20}, {25, 26, 27} };Secara umum, nums[i][j] adalah sama dengan *(*(nums+i)+j).
Maka aritmatika pointer-nya adalah sebagai berikut:
- Notasi pointer *(*nums) adalah notasi dari array nums[0][0] dengan nilai array adalah 16.
- Notasi pointer *(*nums + 1) adalah notasi dari array nums[0][1] dengan nilai array adalah 18.
- Notasi pointer *(*nums + 2) adalah notasi dari array nums[0][2] dengan nilai array adalah 20.
- Notasi pointer *(*(nums + 1)) adalah notasi dari array nums[1][0] dengan nilai array adalah 25.
- Notasi pointer *(*(nums + 1) + 1) adalah notasi dari array nums[1][1] dengan nilai array 26.
- Notasi pointer *(*(nums + 1) + 2) adalah notasi dari array nums[1][2] dengan nilai array 27.
- Mendeklarasikan Pointer Ke Sebuah Fungsi Bahasa C
- Pointer VS Array Bahasa C Beserta Penjelasannya
- Pointer Void Bahasa C Beserta Fungsi dan Penjelasannya
- Pointer NULL Bahasa C Beserta Fungsi dan Penjelasannya
- Pointer Ke Fungsi Bahasa C Beserta Penjelasannya
- Pointer Near, Far, dan Huge Bahasa C Beserta Penjelasannya
- Linked List Bahasa C Beserta Fungsi dan Penjelasannya
6 komentar untuk "Pengenalan Pointer Bahasa C Serta Penjelasannya"
Hubungi admin melalui Wa : +62-896-2414-6106
Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.
Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.
- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -
Kenapa pointer digunakan pada bahasa C?
BalasHapusPointer pada bahasa C digunakan untuk mengakses alamat memori dari suatu variabel yang disimpan program.
HapusPointer bahasa C digunakan untuk mengakses suatu nilai yang tidak bisa langsung diakses karena suatu batasan tertentu seperti variabel static, dan karena hal tersebut maka digunakan pointer.
HapusPointer itu adalah penunjuk nilai alamat dari suatu variabel.
HapusKenapa pointer yang saya buat mengalami error?
BalasHapusError hanya bisa terjadi dalam dua kondisi, pertama kode program yang digunakan salah, atau typoo, dan yang kedua adalah nilai input yang dimasukkan salah.
Hapus