POINTER C++

Hasil gambar untuk POINTER C++


A. Pengertian Pointer

              Pointer adalah penunjuk suatu variabel. Karena menunjuk suatu variabel, maka pointer wajib memiliki alamat dari variabel yang ditunjuknya. Kadangkala dalam program yang besar, penghematan memori wajib untuk dilakukan. Dengan mekanisme copy dan paste nilai variabel satu kedalam variabel lain, akan sangat memboroskan memori. Dengan mekanisme pointer, suatu variabel dalam suatu fungsi dapat diakses oleh fungsi yang lain.  
B. Membuat Pointer
            pada umumnya pointer sebenarnya adalah variabel, peraturan yang dimiliki variabel juga berlaku pada pointer, jadi tidak jauh beda dengan variabel. pointer hanya mendapatkan beberapa perbedaan yaitu penambahan dua operator yang akan membuat variabel menjadi variabel pointer.
Untuk membuat sebuah variabel pointer kita hanya menambahkan dereference operator sebelum identitas. Operator dereference tidak harus melekat pada identitas, operator tersebut juga bisa di letakan setelah tipe data atau di antara tipe data dan identitas. dari berbagai cara penulisan tersebut memiliki makna yang sama yaitu satu operator dereference hanya akan berlaku pada saru variabel.
Pointer tidak hanya berlaku pada variabel, kita juga dapat melakukanya pada function, objek dan lain-lain. Dan cara implementasi pointer selain pada variabel, caranya masih sama seperti kita melakukanya pada variable.
Bentuk Penulisan
tipeData *identitas;
//atau
tipeData *identitas = &var;
Contoh Penulisan
int *pInt;
double *pDouble = &myVar;
 C. Operator Pointer
              Bahasa C menyediakan dua buah operator untuk operasi pointer yaitu operator ‘*’ dan operator ‘&’.  Operator alamat ‘&’ digunakan untuk mendapatkan alamat memori dari operandnya.
Operator ‘*’ digunakan untuk mendapatkan nilai dari operandnya.
Contoh :
#include <stdio.h> main() { char*Alamat_X,X,Y,Z;
X=’J’;
Alamat_X = &X;      Y = X;
Z = *Alamat_X;
printf(“Nilai variabel X  adalah %c\n”, X);      printf(“Nilai variabel Y  adalah %c\n”, Y);      printf(“Nilai variabel Z  adalah %c\n”, Z);
printf(“Nilai variabel X  adalah berada di alamat %p\n”, Alamat_X);  
}
Jika program ini dijalankan, akan didapatkan hasil :
Nilai variabel X adalah J Nilai variabel Y adalah J
Nilai variabel Z adalah J
Nilai variabel X berada di alamat FFDB

D. Pointer dan Array
                 Tahukah kamu bahwa jika kamu menuliskan sebuah array tanpa tanda kurung kotak ([]) maupun indeksnya, maka array tersebut menunjuk atau bersi alamat elem pertama dari array tersebut. Misalkan kamu membuat sebuah pointer bertipe int dengan nama pointerArray dan sebuah array dengan tipe yang sama yaitu int dengan nama nilaiArray, maka pemberian nilai berikut sah dan dapat dilakukan:






Dari sintaks di atas, variabel pointer dengan nama pointrArray sekarang menunjuk pada alamat memori elemen pertama array dengan nama nilaiArray. Nah secara tidak langsung kita dapat mengakses nilai elemen array dengan menggunakan variabel pointer. Berikut Mimin contohkan sintaks pemrogramannya:

Dari hasil di atas, dapat kamu lihat bagaimana cara mengakses nilai array dengan menggunakan pointer.Suatu pointer bertipe int hanya dapat digunakan untuk menunjuk pada variabel int. Sebab, tipe data tersebut akan menentukan sifat pointer ketika alamat pointer tersebut dilakukan increment. Begitu juga untuk tipe data yang lain.
E. Array Pointer
Pointer juga bisa diarraykan layaknya tipe data lain. Misalnya deklarasi untuk array pointer ke int dengan 10 elemen adalah
1
int *x[10];
Untuk memberikan alamat sebuah variabel (misalnya variabel var) ke elemen ketiga dari array pointer, tulis
1
x[2] = var;
untuk menemukan nilai var, tulis

1
2
3
4
5
6
 void display_array(int *q[])
 {
  int t;
  for(t=0; t<10; t++)
   printf("%d", *q[t]);
 }
Ingat, q bukan sebuah pointer ke integer, tapi adalah pointer ke sebuah array pointer ke integer (Perhatikan gambar dibawah.) Parameter q tidak akan bisa menerima argumen selain sebuah pointer ke integer, karena itulah q dideklarasikan sebagai array pointer.

Array pointer sering digunakan untuk menyimpan pointer ke string. Kita bisa membuat fungsi yang menghasilkan pesan error berdasarkan kode angka, seperti berikut:
1
2
3
4
5
6
7
8
9
10
void syntax_error(int num)
{
static char *err[] = {
"Cannot Open File\n",
"Read Error\n",
"Write Error\n",
"Media Failure\n"
};
printf("%s", err[num]);
}
1
2
3
4
5
6
7
8
9
10
void syntax_error(int num)
{
static char *err[] = {
"Cannot Open File\n",
"Read Error\n",
"Write Error\n",
"Media Failure\n"
};
printf("%s", err[num]);
}
Array error menyimpan pointer ke setiap string. Seperti yang kita lihat, printf() didalam syntax_error()dipanggil dengan pointer karakter yang menunjuk ke salah satu dari berbagai
pesan error yang diindekskan berdasarkan pada angka yang dilewatkan ke fungsi. Misalnya, jika num diberi nilai 2, pesan Write Error akan ditampilkan.

F. Pointer Sebagai Parameter Fungsi             Seperti halnya dengan array, pointer dapat digunakan sebagai parameter suatu fungsi. Karena sifat pointer yang hanya sebagai penunjuk, maka setiap perubahan yang terjadi pada parameter, sebenarnya terjadi pada variabel yang ditunjuk bukan pada variabel pointer. Berikut Mimin contohkan program sederhananya:

Pada program diatas, Mimin membuat fungsi tambah, dimana ketika alama suatu variabel diberikan sebagai parameter fungsi, nilai 20 akan ditambahkan pada alamat tersebut. Perbedaan parameter berupa pointer dan non-pointer adalah, pada variabel non-pointer, ketika kamu ingin memasukkan nilai pada sebuah variabel kedalam parameter, kamu harus memasukkan nilai dari variabel tersebut. Untuk parameter berupa pointer, kamu cukup memasukkan alamat variabel yang menampung nilai dengan operator (&) kedalam parameter fungsi
Yang menarik adalah pada fungsi tambah di atas, walaupun fungsi tersebut merupakan fungsi void tanpa nilai kembalian alias return, namun nilai variabel parameter berubah.

"SEMOGA BERMANFAAT"
REFERENSI :
https://www.sinauarduino.com/artikel/pointer-pada-pemrograman-cpp/
https://www.sinauarduino.com/artikel/pointer-pada-pemrograman-cpp/ 

Komentar

Postingan populer dari blog ini

QUEUE "ANTRIAN"

STACK C++