MODUL VII POINTER
Praktikum
Studi Kasus 1
Buatlah program yang dapat memindahkan isi variable awal menuju
ke variable tujuan yang ditunjuk serta menampilkan alamat alokasi memory
sebelum di pindahkan kevariable tujuan.
#include<conio.h>
void main()
{
int x, y;
int *px;
clrscr();
x = 87;
px = &x;
y = *px;
cout<<" Alamat x Pada Memori =
"<<&x<<endl;
cout<<" Isi px = "<<px<<endl;
cout<<" Isi x = "<<x<<endl;
cout<<" Nilai Yang Ditunjuk Oleh px =
"<<*px<<endl;
cout<<" Alamat y pd Memori =
"<<&y<<endl;
cout<<" Nilai y = "<<y<<endl;
getch();
}
Hasil Running :
Pembahasan :
Dari program diatas
bisa dilihat itu memindahkan nilai dan mengetahi alokasi dengan x nya
mempunyai nilai 87,kemudian px itu alokasi nya sama dengan x.Dan nilai y memiliki
nilai y=*px bintang itu termasuk ke dalam reference nya.
Studi Kasus 2
Terdapat sebuah array yang memiliki hanya satu elemen yaitu 5 dan tempatkan
pada indeks ke 0 dalam array, sementara alamat indeks selebihnya bernilai 0,
buatlah program yang dapat mengisi alamat indeks yang lain melalui
nilai elemen indeks ke – 0 ( contoh penyelesaian kasus di atas pada program dibawah
ini bersifat sains).
#include<iostream.h>
#include<conio.h>
int main()
{
int x[5], *p, k;
clrscr();
p = x;
x[0] = 5 ;//x[0] diisi dengan 5 sehingga x[0] = 5
x[1] = x[0]; // x[1] diisi dengan x[0] sehingga x[1] = 5
x[2] = *p + 2; // x[2] diisi dengan x[0] + 2 sehingga
x[2] = 7;
x[3] = *(p+1) - 3 ; // x[3] diisi dengan x[1] - 3 sehingga x[3] = 2;
x[4] = *(x + 2);// x[4] diisi dengan x[2] sehingga
x[4] = 7;
cout<<" Array Setelah Diisi = "<<endl;
cout<<endl;
for(k=0; k<5; k++)
{
cout<<"x["<<k<<"] =
"<<x[k]<<endl;
}
getch();
return 0;
}
}
Hasil Running :
Pembahasan :
Program diatas yaitu
cara mengisi indeks yang didalamnya terdapat variable pointer yang digunakan
untuk memindahkan nilai indeks pertama sampai indeks terakhir.
Studi Kasus 3
#include<stdio.h>
#include<conio.h>
void tambahsepuluh(int *);
void ubahkarakter(char *);
int main()
{
int bilangan = 4;
char sesuatu = 's';
printf(" Bilangan Sebelum fungsi di panggil : %d
\n",bilangan);
printf(" Nilai sesuatu sebelum fungsi dipanggil : %c
\n\n",sesuatu);
tambahsepuluh(&bilangan);
ubahkarakter(&sesuatu);
printf(" Bilangan Setelah Fungsi Dipanggil : %d \n",bilangan);
printf(" Nilai sesuatu setelah fungsi dipanggil : %c
\n",sesuatu);
getch();
return 0;
}
void tambahsepuluh(int *bil){
*bil = *bil + 10;
}
void ubahkarakter(char *kar)
{
char karakter = 'H';
*kar = karakter;
}
Hasil Running :
Pembahasan :
Dari program diatas digunakan untuk merubah suatu nilai dan karakter dengan menggunakan fungsi
pointer.
Latihan 1
Dengan memasukan nilai integer 5 nilai dan melalui variable pointer
bagaimana agar dapat mengetahui elemen tersebutakan menempati di lokasi memory
berapa program berjalan secara setatis hanya sebanyak 5 buah nilai
integer
#include<stdio.h>
#include<conio.h>
#include<iostream.h>
main()
{
int i;
int nilai[50];
int *trnilai;
trnilai = nilai;
for(i=0;i<5;i++)
{
cout<<" Masukan Nilai ke - "<<i<<":
";
cin>>nilai[i];
}
cout<<endl;
cout<<" Pengaksesan Elemen Array Lewat ";
cout<<" Pointer";
cout<<endl<<endl;
for(i=1;i<=5; i++)
{
cout<<" Elemen "<<i<<" Nilai
"<<nilai[i]<<endl;
cout<<" Menempati Alamat Memory : "<<&trnilai[i];
cout<<endl;
}
getch();
return 0;
}
Hasil Running :
Pembahasan :
Dari program diatas
mencari suatu alokasi dengan menggunakan pointer yang telah diiputkan, kita
inputkan 5 variabel terlebih dahulu , kemudian untuk mengetahui
alokasinya kita gunakan operasi pointer deference pada variabel nilainya
karena memiliki nilai variabel yang sama.
Latihan 2
Dengan Memasukan Nilai integer N nilai dan melalui variable pointer
bagaimana agar dapat mengetahui elemen tersebutakan menempati di lokasi memory
berapa program berjalan secara setatis hanya sebanyak N buah nilai
integer
#include<stdio.h>
#include<iostream.h>
#include<conio.h>
main()
{
int i, N;
int nilai[50];
int *trnilai;
trnilai = nilai;
cout<<" Masukan Batasan = ";
cin>>N;
cout<<endl<<endl;
for(i=0;i<N;i++)
{
cout<<" Masukan Nilai ke - "<<i<<":
";
cin>>nilai[i];
}
cout<<endl;
cout<<" Pengaksesan Elemen Array Lewat ";
cout<<"Pointer";
cout<<endl<<endl;
for(i=1;i<=N; i++)
{
cout<<" Elemen "<<i<<" Nilai
"<<nilai[i]<<endl;
cout<<" Menempati Alamat Memory : "<<&trnilai[i];
cout<<endl;
}
getch();
return 0;
}
Pembahasan :
Program diatas hampir sama dengan program Latihan 1, pada program ini kita diharuskan memasukan batasan pengulangannya, pertama kita masukan batasan perulangannya baru setelah itu kita inputkan isi datanya.












