MODUL VI POINTER I. Tujuan
1. Memahami konsep pointer
2. Memahami implementasi pointer dalam pemrograman cpp
II. Dasar Teori
Pointer adalah sebuah tipe data yang menunjuk value lain yang tersimpan dalam memory. Dengan menggunakan pointer kita dapat mengakses sebuah value tanpa mengacu pada variable tersebut secara langsung melainkan dengan menggunakan alamat dari variable tersebut. Pointer juga sering digunakan sebagai pengakses array selain menggunakan indeks.
Pendeklarasian pointer
Tipe_data *nama_variabel_pointer
DEMO 1
void main()
{
int x;
int *pointerX;
printf(“masukkan value dari variable X: “);
scanf(“%d”,&x);
pointerX=&x;
printf(“alamat variabel: %d dan valuenya %d",pointerX,*pointerX);
Pada code diatas dapat diamati cara deklarasi sebuah pointer untuk menunjuk variable bertipe integer. Pada statement pointerX=&x; pointer diarahkan untuk menunjukkan alamat variable x berada. Pada saat dicetak pointerX digunakan untuk mencetak alamat dari variable x. Sedangkan *pointer digunakan untuk mencetak nilai dari variable x.
Contoh dekalarasi pointer pada array:
DEMO 2
void main()
{
int M[5],i;
int *pointerM;
for(i=0;i<5;i++)
{
M[i]=i+1;
}
pointerM=&M[0];
for(i=0;i<5;i++)
{
printf("\nAlamat Variabel M:%d\n value:%d\n",pointerM,*pointerM);
pointerM++;
}
//mengubah isi dari index tertentu lewat pointer
printf("Ubah isi dari Index ke (0 - 4):");
scanf("%d",&i);
pointerM=&M[i];
printf("Masukkan Value:");
printf("\nHasil: \nAlamat Variabel M:%d
\nvalue:%d\n",pointerM,*pointerM);
}
Pada code diatas pointerM=&M[0]; berarti pointerM menunjuk alamat dari array M indeks ke 0. Kemudian pada saat mengganti value pada array indeks tertentu, perintah scanf
tidak menggunakan tanda ‘&’ karena pointerM telah menunjuk alamat dari array indeks yang
ditentukan dengan menggunakan pointerM=&M[i]; sehingga scanf("%d",pointerM); digunakan untuk mengganti value yang ditunjuk oleh pointerM.
Pointer ke struct
DEMO 3
#include <iostream.h>
typedef struct
{
int NIM;
double IPK;
}Mahasiswa;
void main()
{
Mahasiswa M;
Mahasiswa* pM;
cout<<"NIM : ";cin>>M.NIM;
cout<<"IPK : ";cin>>M.IPK;
pM=&M;
cout<<endl;
cout<<"NIM : "<<pM->NIM<<endl;
cout<<"IPK : "<<pM->IPK<<endl;
}
Pada program diatas, pointer memiliki tipe data yang sama dengan struct sehingga