BAHAN SOSIALISASI PPDB SMA-SMK NEGERI DISDIKSU TP. 2024-2025 REVISI.pptx
POINTER-FUNGSI
1. 1
POINTER
Pointer merupakan satu nilai yang menunjuk alamat
(address) pada lokasi suatu memori komputer. Lokasi memori
tersebut mungkin di wakili oleh sebuah variabel yang mempunyai
nama, atau mungkin juga lokasi bebas dalam memori
Pointer merupakan alamat dari suatu data, bukan data seperti pada
variabel yang telah di kenal
Syntax :
tipe_data *Nama_Pointer; tipe_data *Nama_Pointer = &Variabel;
Atau
tipe_data *Nama_variabel
2. Operator Pointer
Operator pada pointer terdiri dari 2 yaitu:
1. Operator &
Operator & bersifat unary (hanya memerlukan satu operand saja)
Operator & menghasilkan alamat dari operandnya
2. Operator *
Operator * bersifat unary (hanya memerlukan satu operand saja)
Operator * menghasilkan nilai yang berada pada sebuah alamat
Contoh :
int A=9;
int *ptr A;
ptrA = &A;
atau
float B=9.99;
float *ptrB = &B;
2
3. 3
dimana:
ptrA merupakan pointer to integer (berisi alamat dari variabel A).
ptrB merupakan pointer to float (berisi alamat dari variabel B).
*ptrA berisi memori yang ditunjuk oleh ptrA (berisi nilai
bilangan integer = 9).
*ptrB berisi memori yang ditunjuk oleh ptrB (berisi nilai
bilangan pecahan = 9.99).
Contoh Program C++ :
#include <iostream.h>
#include <conio.h>
void main()
{ int alif = 5;
float ba =7.5;
double ta = 17.777;
clrscr();
5. Mengakses Nilai Yang Di Tunjuk Pointer
#include <iostream.h>
#include <conio.h>
void main()
{ int vint = 55;
int * pint;
clrscr();
pint = &vint;
cout<<“Nilai yang di tunjuk oleh pint =“<<*pint<<endl;
}
5
6. Pointer Void
pada contoh diatas telah diberikan beberapa variabel pointer yang menunjuk ke tipe
data tertentu. Namun dimungkinkan untuk membuat pointer yang tidak bertipe. Caranya
dengan meletakkan kata kunci void pada bagian penentu tipe pointer. contoh : void *ptr;
merupakan pernyataan untuk mendefinisikan ptr sebagai variabel pointer void yang
dapat menunjukkan ke sembarang tipe data.
Contoh :
#include <iostream.h>
#include <conio.h>
void main()
{ clrscr();
void *ptr; // pointer tak bertipe
int vint = 50;
float vfl = 51.5;
ptr = &vint;
cout<<“Nilai yang di tunjuk oleh ptr =“<<*(int*)ptr<<endl; //ptr adl pointer void mk
harus //menyebutkan tipe data yg diakses melalui type cast
ptr = &vfl;
cout<<“Nilai yang di tunjuk oleh ptr =“<<*(float*)ptr<<endl;
}
6
7. 7
Pointer – Array :
Mempunyai hubungan yang dekat dimana secara internal array juga
menyatakan alamat. Digunakan untuk melakukan akses elemen
array.
Syntax :
tipe_data *Nama_Pointer = Nama_Array;
Contoh didefinisikan :
int tgl_lahir[10] = {24,6,1965};
dan
int *ptgl;
agar ptgl menunjuk ke array mk diperlukan pernyataan
ptgl = tgl_lahir;
Perhatikan pernyataan diatas dimana tidak ada tanda & di depan
tgl_lahir, padahal beberapa contoh di depan menggunakan format
Ptr = & variabel
8. 8
Contoh Program C++ :
#include <iostream.h>
#include <conio.h>
void main()
{ clrscr();
int tgl_lahir[ ] = {24, 6, 1965};
int *ptgl;
ptgl = tgl_lahir;
for (int I = 0; i<3; i++)
cout<<*(ptgl+i)<<endl; // c++ mengetahui bahwa tgl_lahir+(ukuran tipe elemen tgl_lahir)+1
}
Contoh Program C++ :
#include <iostream.h>
#include <conio.h>
void main()
{ clrscr();
int tgl_lahir[ ] = {24, 6, 1965};
int *ptgl;
ptgl = tgl_lahir; // ptgl menunjuk ke elemen pertama dari array
for (int I = 0; i<3; i++)
{ cout<<“ptgl =“<<ptgl<<endl;
cout<<“*ptgl =“<<*ptgl<<endl;
ptgl++; // menunjuk ke elemen berikutnya
}
}
9. 9
Pointer – string:
Contoh :
#include <iostream.h>
#include <conio.h>
void main()
{ clrscr();
char *ptokoh = “ gatotkaca”;
cout<< ptokoh<<endl;
}
Pada contoh diatas akan menyebabkan c++:
Mangalokasikan ptokoh sebagai variabel pointer yang menunjuk ke data bertipe char
dan menempatkan konstanta string “ gatotkaca” ke suatu lokasi di memori komputer
Kemudian ptokoh akan menunjuk ke lokasi string “gatotkaca”
Pernyataan diatas menyerupai pernyataan:
Char tokoh[ ] = “ gatotkaca”
Perbedaannya :
Ptokoh adalah pointer yang dengan mudah dapat diatur agar menunjuk ke data string
Tokoh adalah array yang menyatakan alamat yang konsatan tidak dapat di ubah.
Yang dapat diubah adalah elemen arraynya
11. Pointer dan Fungsi
Pointer biasa di gunakan di dalam argumen fungsi apabila nilai argumen
dimaksudkan untuk di ubah di dalam fungsi
Pointer sebagai Argument Fungsi
#include <iostream.h>
#include <conio.h>
Void ubah_nilai(int&x);
Void main()
{
clrscr();
int pinokio = 80;
cout<<“nilai mula-mula untuk pinokio :”<<pinokio<<endl;
ubah_nilai(pinokio);
cout<<“nilai untuk pinokio sekarang :”<<pinokio<<endl;
}
Void ubah_nilai(int&x)
{ x=95;
}
11
12. Pointer sebagai keluaran Fungsi
Suatu fungsi dapat dibuat agar keluarannya berupa pointer.
Misal :
#include <iostream.h>
#include <conio.h>
Char *nama_bulan(int n); // protipe
void main()
{ int bln;
clrscr();
cout<<“Bulan(1..12):”;
cin>>bln;
cout<<nama_bulan(bln)<<endl;
}
Char *nama_bulan(int n)
{
12
14. Pada definisi fungsi diatas,
Char *nama_bulan(int n)
Menyatakan bahwa nilai balik fungsi nama_bulan() berupa pointer yang
menunjuk ke data bertipe char (string).
Di bagian akhir fungsi, pernyataan :
return((n<1||n>12)?bulan[0] : bulan[n]);
Menyatakan nilai balik fungsi berupa pointer menunjuk ke :
String “kode bulan salah”(bulan[0]), jika argumen fungsi bernilai kurang dari
1 atau lebih besar daripada 12
Bulan[n], kalau n bernilai antara 1 sampai dengan 12
14