Alamat Memori Variabel
Semua variabel dalam program akan akan tersimpan dalam memori (RAM), penulisan alamat dalam memori menggunakan heksadesimal dan diawali dengan 0x. Contoh kita mendeklarasikan sebuah int x dan dimasukkan angka 10, dimana ukuran variabel tipe int adalah 4 byte, maka angka 10 tersebut tersimpan dalam 4 wadah acak misal 0x000010, 0x000011, 0x000012, 0x000013.Reference (*)
Reference ditulis dengan lambang (*) adalah sebuah operator yang menyatakan bahwa variabel yang diberi awalan reference (*) adalah sebuah variabel pointer. Variabel pointer dapat menyimpan alamat memori dari variabel lainnya (deference), dengan fungsi yang sama yaitu int dengan int char dengan char.#include<iostream>
using namespace std;
int main(){
int a = 10;
int *inipntr = &a;
cout<<*inipntr<<endl; //menghasilkan nilai dari variabel yang ditunjuk (10)
return 0;
}
Contoh hasil outputnya : 10
[Program finished]
Deference (&)
Deference adalah sebuah operator yang berfungsi memberitahu alamat memori suatu variabel. Variabel yang diberi operator diference (&) pada bagian output, maka output tersebut akan menampilkan alamat dari variabel tersebut.
Begitu juga variabel pointer yang penyimpan deference (&), jika lambang (*) dihilangkan, maka akan menghasilkan alamat memori dari varibel yang ditunjuk. Contoh : Nilai *inipntr adalah 20, Jika inipntr adalah 0x00000012.
0x7fd3c9f178
0x7fd3c9f178
[Program finished]
#include<iostream>
using namespace std;
int main(){
int b = 20;
int *inipntr = &b;
cout<<&b<<endl; //menghasilkan alamat variabel (0x000123)
cout<<inipntr<<endl; //menghasilkan alamat memori dari variabel ug ditinjuk (0x000123)
return 0;
}
Contoh hasil outputnya : 0x7fd3c9f178
0x7fd3c9f178
[Program finished]
Setelah mempelajari reference (*) dan deference (&) berikut contoh gabungan keduanya
#include<iostream>
using namespace std;
int main(){
int b = 20;
int *inipntr = &b;
cout<<*inipntr<<endl; //menghasilkan nilai dari variabel yang ditunjuk (20)
cout<<&b<<endl; //menghasilkan alamat variabel (0x000123)
cout<<inipntr<<endl; //menghasilkan alamat memori dari variabel ug ditinjuk (0x000123)
return 0;
}
Contoh hasil outputnya : 20
0x7fd5a621a8
0x7fd5a621a8
[Program finished]
Posting Komentar
Posting Komentar