Aritmetika pada Pointer

Posted on   Januari 23, 2018   |   Last Modified   Januari 23, 2018
Aritmetika pada Pointer

Variabel pointer merupakan variabel yang memungkinkan kita untuk menyimpan alamat memori dan Aritmetika adalah operasi dasar dari matematika. Pada pointer kita dimungkinkan untuk menggunakan operator aritmetika pada nilai pointer. Yang penulis maksud bukanlah nilai dari variabel yang ditunjuk oleh pointer tapi nilai pointer itu sendiri, nilai yang berbentuk alamat memori.

Di dalam C/C++ kita dimunkinkan untuk mengoperasi nilai dari pointer, tapi operator yang dimungkinkan hanyalah penambahan dan pengurangan (+/-/++/–) nilai dari pointer.

Contoh Penulisan

pInt++;
++pDouble;
--pChar;
//juga bisa
pInt = pInt + 5;

Contoh Program

#include <iostream>
using namespace std;

int main()
{
    int var = 2;
    int *pVar = &var;

    cout<<pVar<<endl;
    pVar++;
    cout<<pVar<<endl;

    return 0;
}

Penulis pernah memberitahu pada artikel sebelumnya dan juga pada artikel ini. Bahwa tindakan ini tidaklah aman. Jika pointer mengarah ke variabel biasa dan melakukan operasi, kemungkinan memori itu bukan milik program anda, sebelum mengakses nilai(mengubah nilai) dari memori pastikan memori itu milik program anda. Karena biasanya tindakan melakukan operasi pada nilai pointer hanya dilakukan pada variabel larik.

Pada contoh di atas memberikan keluaran 2 alamat memori yang berbeda dari nilai pointer, alamat memori pertama adalah alamat memori dari variabel ‘var’ dan kedua adalah alamat memori setelah dilakukan operasi peningkatan, hasil dari operasi menghasilkan alamat memori sebelumnya meningkat sebesar 4 tingkat.

Melakukan operasi pada pointer tidak sama seperti kita melakukan operasi pada variabel biasa. Jika operator peningkatan atau pengurangan dilakukan pada nilai dari variabel biasa maka nilai dari variabel tersebut akan ditambah atau dikurangi satu ‘1’ angka/tingkat. Tapi hal itu akan berbeda pada nilai pointer.

Peningkatan atau penurunan pada nilai pointer tergantung pada ukuran memori tipe data yang digunakan. Jika variabel pointer menggunakan integer maka alamat akan bertambah atau berkurang 4 tingkat, jika char maka akan bertambah atau berkurang 1 tingkat. Semua itu tergantung pada tipe data yang digunakan.

Baca :   Perulangan bagian 3: break dan continue
Aritmetika pada Pointer
Aritmetika pada Pointer

Tapi semua itu sebenarnya hanya meningkat atau menurun sebanyak 1. Satu ‘1’ disini bukan merupakan tingkatan angka tapi merupakan 1 tingkatan memori. Jadi peningkatan dan penurunan nilai pointer tetaplah meningkat atau menurun 1 tingkat memori (bukan angka). Dan besar memori itu tergantung pada besar tipe data.

Hal di atas cukup jelas jika kita melakukan penambahan atau pengurangan pada nilai pointer menggunakan bilangan. Apa yang akan terjadi adalah peningkatan atau penurunan memori sebanyak bilangan yang disebutkan.


Tinggalkan Balasan

Alamat email Anda tidak akan dipublikasikan. Ruas yang wajib ditandai *