0% menganggap dokumen ini bermanfaat (0 suara)
111 tayangan35 halaman

Makalah Pointer Ysnta

Dokumen ini membahas tentang pointer dalam bahasa pemrograman C. Pointer adalah variabel yang menyimpan alamat memori variabel lain. Dokumen ini menjelaskan pendeklarasian, penggunaan, dan contoh kode pointer dalam C.

Diunggah oleh

Yasinta Shabilla
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
0% menganggap dokumen ini bermanfaat (0 suara)
111 tayangan35 halaman

Makalah Pointer Ysnta

Dokumen ini membahas tentang pointer dalam bahasa pemrograman C. Pointer adalah variabel yang menyimpan alamat memori variabel lain. Dokumen ini menjelaskan pendeklarasian, penggunaan, dan contoh kode pointer dalam C.

Diunggah oleh

Yasinta Shabilla
Hak Cipta
© © All Rights Reserved
Kami menangani hak cipta konten dengan serius. Jika Anda merasa konten ini milik Anda, ajukan klaim di sini.
Format Tersedia
Unduh sebagai PDF, TXT atau baca online di Scribd
Anda di halaman 1/ 35

MAKALAH

POINTER

Oleh:
Nama : Yasinta Shabilla
NIM : 2023903430046
Kelas : TRKJ 1.C
Jurusan : Teknologi Informasi dan Komputer
Program Studi : Teknologi Rekayasa Komputer Jaringan
Dosen Pembimbing :Indrawati, SST. MT

JURUSAN TEKNOLOGI, KOMPUTER, DAN INFORMASI


PRODI TEKNOLOGI REKAYASA KOMPUTER DAN JARINGAN
POLITEKNIK NEGERI LHOKSEUMAWE
TAHUN AJARAN 2022/2023

1
BAB I

PENDAHULUAN

1. Pengertian POINTER

Pointer (dalam pemrograman C) adalah suatu variable yang berisikan


suatu alamat lokasi tertentu. Yang disimpan oleh variabel yang didefinisikan
sebagai pointer adalah ‘alamat’ variabel tersebut. Seperti yang kita ketahui,
variabel pointer berfungsi sebagai penunjuk alamat lokasi variabel lain, dan
mengganti nilai variable lyang ditunjuk tersebut Pada operasi pointer, kita
menggunakan 2 buah operator dalam bahasa C yaitu “*” dan “&”. Dalam
pembuatan program menggunakan pointer, tanda asterisk “*” digunakan untuk
menentukan variable yang menjadi suatu pointer.

Pointer banyak dilibatkan dalam bahasa program bahasa c,Misalnya untuk


melewatkan string dari suatu fungsi ke fungsi yang lain.penerrapan pointer yang
paling umum yaitu untuk menciptakan variable dinamis,yang memungkinkan
untuk memakai memori bebas ( memori yang belum dipakai) selama ekseskusi
program.

1.1 Pointer Menunjuk Obyek Lain


Variabel Pointer sering dikatakan sebagai variable yang menunjuk ke
obyek lain.Pada kenyataan yang sebenarnya variable pointer atau disingkat
dengan pointer berisi alamat suatu obyek yang lain (yaitu obyek yang dikatakan
ditunjuk oleh pointer).Sebagai contoh , px adalah pointer dan x adalah variable
yang ditunjuk oleh px.Kalau x berada pada alamat memori (alamat awal)
1000,maka px akan berisi 1000.

2
1.2. Mendeklarasikan Variabel Pointer

Suatu Variabel pointer dideklarasikan dengan bentuk sebagai


berikut:

tipe *nama_variabel

nama_variabel adalah nama dari variable pointer.

Sebagai contoh:

Int *px /*contoh 1 */

Char *pch1, *pch2 /*contoh 2 */

Contoh pertama menyatakan bahwa px adalah variable pointer yang


menunjuk ke suatu data bertipe int.Pada contoh kedua masing masing pch1 dan
pch2 adalah variable pointer yang menunjuk ke data bertipe char.

Gambar 1.2. Ilustrasi pendeklarasian variable poiinter

1.3. Mengatur Pointer Agar Menunjuk Ke Variabel Lain

Agar suatu pointer menunjuk ke variable lain,mula mula pointer


harus di isi dengan alamat dari variable yang akan ditunjuk.Untuk menyatakan
alamat dari suatu variable ,operator & (operator alamat yang bersifat unary) bias

3
dipergunakan dengan cara mendeklrasikan contoh,apabila x dideklrasikan dengan
variable bertipe int, maka

&x

Berarti “alamat dari variable x” Adapun contoh pemberian alamat ke


suatu variable pointe px ( yang dideklarasikan sebagai pointer yang menunjuk ke
data bertipe int) yaitu

Px = &x;

Pernyataan di atas berarti bahwa px diberi nilai berupa alamat dari variable
x .Setelah pernyataan tersebut dieksekusi barulah dapat dikatakan bahwa px
menunjuk ke variable x.

1.4. Mengakses Isi Suatu Variabel Melalui Pointer

Kalau suatu variable sudah ditunjuk oleh pointer,variable yang


ditunjuk oleh pointer dapat diakses melalui variable itu sendiri (dikatakan sebagai
pengaksesan langsung) ataupun melalui pointer (dikatakan sebagai pengaksesan
tak langsung).pengaksesan tak langsung dilakukan dengan menggunakan operator
indirection (tak langsung),berupa symbol * (bersifat unary).Contoh penerapan
operator *,yaitu

*px

Yang menyatakan “isi atau nilai variable/data yang ditunjuk oleh pointer
px*.Sebagai contoh jika y bertipe int , maka sesudah dua pernyataan berikut

px = &x;

y = *px;

y akan berisi nilai yang sesuai dengan nilai x .berikut adalah contoh
program nya

4
#include <stdio>

Int main(){

Int x, y; /*x & y bertipe int */

Int *px; /*px pointer yang menunjuk obyek */

x = 87;

px = &x; /*px berisi alamat dari x */

y = *px; /*y berisi nilai yang ditunjuk px*/

printf(“Alamat x = %p\n”, &x);

printf(“Isi px = %p\n”,px)

printf(“Isi x = %d\n,x);

printf(“Nilai yang ditunjuk oleh px = %d\n,*px);

printf(“Nilai y = %d\n,y);

Contoh Eksekusi:

A>PTR1

Alamat x = FFEO

Isi px = FFEO

Isi x = 87

Nilai yang ditunjuk oleh px = 87

Nilai y = 87

5
Pada Program diatas , dua pernyataan

px = &x;

y = *px;

Sebenarnya dapat digantikan dengan sebuah pernyataan berupa

y = x;

Seandainya pada program di atas tak dapat pernyataan

y = &px;

maka, y tidaklah berisi nilai x , sebab px belum diatur agar menunjuk


variable x.Hal seperti ini harus diperhatikan kalau program melibatkan pointer ,
dan pointer belum diinisialisasi,ada kemungkinan akan terjadi masalah yang
dinamakan “bug”.Masalah “bug”yang terjadi bias menyebabkan computer tak
dapat dikendalikan lagi (“hang”).

1.5.Tipe Variabel Pointer Dan Tipe Obyek Yang Ditunjuk.

Antara tipe pointer (sesuai dengan pendeklarasian pointer) dan tipe


obyek yang akan ditunjuk oleh pointer haruslah sejenis.Kalau misaknya pointer
pu dimaksudkan untuk menunjuk data bertipe int maka data yang akan ditunjuk
oleh pointer pu juga harus bertipe int. Sesuatu kesalahan akan terjadi kalau
misalnya pointer float digunakan untuk menunjuk data bertipe int.Hal ini
ditunjukkan oleh contoh program berikut.

#include <stdio.h>

int main(){

float *pu;

6
float *nu;

int u = 1234;

pu = &u; /*pernyataan ini salah */

/*sebab pu adalah pointer float */

/*padahal u betipe int */

nu = *pu;

printf(“u = %d\n”,u);

printf(“nu = %f\n”,nu);

Program di atas ,saat penugasan

pu = &u;

maka pu akan menunjuk data yang berukuran 4 byte (tipe float)sekalipun


u bertipe int.Oleh karena itu ,pernyataan

nu = *pu;

tidak akan membuat nu berisi nilai u.Untuk lebih jelas perhatikan


gambar berikut.

Gambar 1.3. Ilustrasi kesalahan yang terjadi karena tipe pointer dan tipe
data yang ditunjuk tidak sejenis

7
1.6. Mengubah Isi Suatu Variabel Melalui Pointer

Contoh berikut memberikan gambaran tentang pengubahan isi


suatu variable secara tak langsung (yaitu melalui pointer).Mula-mula pd
dideklarasikan sebagai pointer yang menunjuk ke suatu data bertipe float dan d
sebagai variable bertipe float.Selanjutnya

d = 54.5;

digunakan untuk mengisikan nilai 54.5 secara tidak langsung ke variable


d. Adapun

pd = &d;

digunakan untuk memberikan alamat dari d ke pd.Dengan demikian pd


menunjuk ke variable d. Sedangkan pernyataan berikutnya

*pd = *pd + 10; atau *pd += 10;

Merupakan instruksi untuk mengubah nilai variable d secara tak


langsung.Perintah di atas berarti “jumlahkan yang ditunjuk pd dengan 10 dan
kemudia berikan ke yang ditunjuk oleh “pd atau identic dengan pernyataan
berikut

d = d + 10;

Akan tetapi,seandainya tidak ada instruksi

pd = &d;

pernyataan

*pd = d + 10;

Tidaklah sama dengan

d = d + 10;

Berikut contoh program nya:

8
#include <stdio.h>

Int main (){

Float d, *pd;

d = 54.5;

printf(“isi d semula = %g\n”,d);

pd = %d;

*pd = *pd + 10;

Printf(“isi d kini = %g\n”,d);

Contoh eksekusi:

isi d semula = 54.5

isi d kini = 64.5

1.7. Pointer dan Array

Hubungan antara pointer dan array dalam bahasa C sangatlah


penting.Sebab sesungguhnya array secara internal akan diterjemahkan dalam
bentuk pointer.Pembhasan berikut akan memberikan penjelasan hubungan antara
pointer dan array.

Misalnya dideklarasikan di dalam suatu fungsi

static int tgl_lahir[3] = { 01, 09, 64 };

dan

int *ptgl;

9
Kemudian diberikan instruksi

ptgl = tgl_lahir;

maka ptgl akan berisi alamat dari elemen array tgl_lahir yang berindeks
nol.Instruksi di atas juga dapat ditulis menjadi

ptgl = tgl_lahir;

sebab nama array tanpa tanda kurung menyatakan alamat awal dari
array.Sesudah penugasan di atas,

*ptgl

Dengan sendirinya menyatakan elemen pertama (berindeks sama dengan


nol) dari array tgl_lahir . Hal ini bias dilihat melalui pembuktian program berikut.

#include <stdio.h>

int main(){

static int tgl_lahir[] = { 24, 6, 1965 };

int *ptgl;

ptgl = tgl_lahir;

printf(“Nilai yang ditunjuk oleh


ptgl=%d\n”,ptgl);

printf(“Nilai dari tgl_lahir[0]


=%d\n”,tgl_lahir [0]);

Contoh eksekusi:

Nilai yang ditunjuk oleh ptgl = 24

Nilai dari tgl_lahir = 24

10
Jika ingin menampilkan seluruh elemen array tgl_lahir , perintah yang
bias digunakan berupa

for(I = 0 ; i < 3 ; i++)

printf(“%d “, tgl_lahir[i]);

Dengan menggunakan pointer,

tgl_lahir[i]

dapat diganti menjadi

*(ptgl + i)

Dengan terlebih dahulu mengatur ptgl_lahir agar menunjuk array


tgl_lahir. Sehingga penulisan instruksi penampilan isi array tgl_lahir dapat
diubah menjadi

ptgl = tgl_lahir;

for(i = 0 ; i < 3 ; i++)

printf(“%d”, *(ptgl + i ) );

Contoh program:

#include <stdio.h>

int main(){

static int tgl_lahir[]= {24, 6, 1965 };

int i;

int *ptgl;

ptgl = tgl_lahir; /*ptgl berisi alamat


array */

11
for(i = 0 ; i < 3 ; i++)

printf(“%d\n, *(ptgl + i) );

Contoh eksekusi:

24

1965

Secara Umum operasi pointer bisa diterangkan sebagai berikut.Jika


a adalah suatu array dan pa adalah inter yang menunjuk array a, maka

*(pa + i)

Akan menyatakan elemen array dengan indeks sama dengan i.Jadi

*(pa + 0) identik a[0]

*(pa + 1) identik a[1]

*(pa + 2) identik a[2]

Ungkapan seperti

pa + i

memiliki arti “tambahkan nilai pa (berisi alamat) dengan i kali ukuran


dari obyek yang ditunjuk oleh pa”.Kalau pa dideklarasikan sebagai

int *pa;

maka obyek dari pa adalah data int (berukuran 2 byte).

12
Cara lain dalam menampilkan isi suatu array yaitu dengan
menaikkan isi variable pointer memakai operator ++. Berikut adalah contoh lain
dari program yang di atas .Pada program ini

*(ptgl+i)

Diganti menjadi

ptgl++

Berikut adalah contoh program nya:

#include <stdio.h>

int main(){

static int tgl_lahir[] = { 24, 6, 1965};

int i;

int *ptgl;

ptgl = tgl_lahir; /*ptgl berisi alamat


array*/

for(i=0; i<3; *ptgl++);

Contoh eksekusi:

24

1965

13
1.8. Pointer dan String

Contoh hubungan pointer dan string ditunjukkan pada program


berikut;

#include <stdio.h>

main(){

char *pkota = “SEMARANG”;

puts(pkota);

Contoh eksekusi:

Semarang

Pada program di atas,

Char *pkota = “SEMARANG”;

Akan menyebabkan compiler

 Mengalokasikan variable pkota sebagai variable pointer yang menunjuk ke


obyek bertipe char an menempatkan konstanta “SEMARANG”dalam
suatu memori
 Kemudian pointer pkota akan menunjuk ke lokasi string “SEMARANG”

14
Pernyataan di ats menyerupai pernyataan

Char kota[] = “SEMARANG”;

Tetapi sebenarnya kedua pernyataan inisialisasi di atas tidaklah


tepat sama. Sebab pkota adalah pointer (menyatakan alamat),yang dengan mudah
(lebih fleksibel)dapat diatur agar menunjuk ke string lain (bukan string
“SEMARANG”),sedangkan kota adalah array (Array menyatakan alamat yang
konstan,tak dapat diubah).

1.8.1. Membuat pointer untuk string

Nama variabel string strmenyimpan alamat elemen pertama array, yaitu


menunjuk pada alamat memori awal. Jadi, kita bisa membuat penunjuk karakter
ptrdan menyimpan alamat strvariabel string di dalamnya.

Dengan cara ini, ptr akan menunjuk pada string str. Dalam kode berikut
menetapkan alamat string strke pointer ptr.

char *ptr = str;

Kita dapat merepresentasikan variabel penunjuk karakter ptr sebagai


berikut.

15
Variabel penunjuk ptrdialokasikan alamat memori 8000 dan menyimpan
alamat variabel string str yaitu 1000.

1.8.2. Mengakses string melalui pointer

Untuk mengakses dan mencetak elemen string kita dapat menggunakan


loop dan memeriksa \0karakter null.

Dalam contoh berikut kita menggunakan whileloop untuk mencetak


karakter variabel string str.

#include <stdio.h>

int main(void) {

// string variable

char str[6] = "Hello";

// pointer variable

char *ptr = str;

// print the string

while(*ptr != '\0') {

printf("%c", *ptr);

// move the ptr pointer to the next memory


location

ptr++;

return 0;

16
1.8.3. Menggunakan pointer untuk menyimpan string

Kita dapat mencapai hasil yang sama dengan membuat penunjuk karakter
yang menunjuk pada nilai string yang disimpan di beberapa lokasi memori.

Dalam contoh berikut kita menggunakan variabel penunjuk karakter


strPtruntuk menyimpan nilai string.

#include <stdio.h>

int main(void) {

// pointer variable to store string

char *strPtr = "Hello";

// temporary pointer variable

char *t = strPtr;

// print the string

while(*t != '\0') {

printf("%c", *t);

// move the t pointer to the next memory


location

t++;

return 0;

17
Dalam kode di atas kita menggunakan penunjuk karakter lain tuntuk
mencetak karakter string karena kita tidak ingin kehilangan alamat awal string
"Halo" yang disimpan dalam variabel penunjuk strPtr.

Pada gambar di atas string "Halo" disimpan di lokasi memori 5000


hingga 5005.Variabel penunjuk strPtrberada di lokasi memori 8000 dan menunjuk
ke alamat string 5000.Variabel sementara juga diberi alamat string sehingga juga
memegang nilai 5000 dan menunjuk pada lokasi memori awal dari string "Halo".

1.9.Array Dari Pointer

Suatu array bias digunakan untuk menyimpan sejumlah pointer.Sebagai


contoh:

char *namahari[10];

merupakan pernyataan untuk mendeklarasikan array pointer.Array namahari


terdiri dari 10 elemen berupa pointer yang menunjuk ke data bertipe char.

1.10.Inisialisasi Array Pointer

Array sebagai pointer bias diinisialisasi sewaktu pendeklarasian.Sebagai


contoh:

static char *namahari[] =

{“Senin”,

18
“Selasa”,

“Rabu”,

“Kamis”,

“Jumat”,

“Sabtu”,

“Minggu”,

};

Pada contoh ini ,

namahari [0] menunjuk ke string “Senin”

namahari[1] menunjuk ke string “Selasa”

namahari[2] menunjuk ke string “Rabu”

dan sebagainya.

1.11. Pointer Menunjuk Pointer.

Suatu pointer bias aja menunjukkan ke pointer lain. Gambar berikut


memberikan contoh mengenai hal ini.

alamat alamat nilai


Ptr1 var_x

Pointer pointer Variabel


ptr2 ptr1 var_x

19
Untuk membentuk rantai pointer seperti di atas ,pendeklarasian yang
diperlukan berupa

int var_x;

int *ptr1;

int **ptr2;

Perhatikan pada deklarasi tersebut:

 Var_x adalah bertipe int


 Ptr1 adalah variable pointer yang menunjuk ke data bertipe int
 Ptr2 adalah variable pointer yang menunjuk ke pointer int.
(inilah sebab deklarasinya berupa: int**ptr2;)

Agar ptr1 menunjuk ke variable var_x,perintah yang diperlukan berupa;

ptr = &var_x;

Sedangkan supaya ptr2 menunjuk ke ptr1 ,instruksi yang diperlukan adalah

ptr2 = &ptr1;

Contoh berikut memberikan gambaran cara pengaksesan nilai pada


var_x melalui pointer ptr1 dan ptr2.

#include <stdio.h>

main(){

int var_x = 273;/* variable int */

int *ptr1; /*pointer int*/

int **ptr2; /*pointer menunjuk ke pointer int */

20
ptr1=&var_x; /* ptr1 berisi alamat dari var_x */

ptr2=&ptr1; /*ptr2 berisi alamat dari ptr1 */

/* Mengakses nilai var_x melalui ptr1 */

Printf(“Nilai var_x = %d\n, *ptr1”);

/* Mengakses nilai var_x melalui ptr2 */

Printf(“Nilai var_x =%d\n”,**ptr2);

Contoh eksekusi:

Nilai var_x = 273

Nilai var_x = 273

1.12.Pointer dan Fungsi

Pointer dan kaitannya dengan fungsi yang akan dibahasa berikut :

 Pointer sebagai parameter fungsi


 Pointer sebagai keluaran fungsi

 Pointer Sebagai Parameter Fungsi


Penerapan pointer sebagai parameter yaitu jika diinginkan agar nilai
suatu variable internal dapat diubah oleh fungsi yang dipanggil.Sebagai
contoh dapart dilihat dari fungsi berikut:
Void naikkan_nilai (int *x, int *y)
{
*x = *x + 2;
*y = *y + 2;

21
Fungsi diatas dimaksudkkan agar kalau dipanggil variable yang
berkaitan dengan parameter actual dapat diubah nilai nya,masing-masing
dinaikkan sebesar 2.Contoh pemanggilan:
Naikkan_nilai(&a, &b);
Dalam hal ini variable a dan variable b heruslah ditulis diawali dengan
operator alamat (&) yang berarti menyatakan alamat variable,sebab
parameter fungsi dalam pendefinisian berupa pointer.
Berikut contoh program nya:
#include <stdio.h>
void naikkan_nilai (int *x, int *y);
main(){
int a = 3
int b = 7
printf(“Nilai awal:a = %d b = %d\n”,a, b);
naikkan_nilai(&a, &b);
printf(“Nilai akhir:a = %d b = %d\n”,a, b);
}
void naikkan_nilai (int *x, int *y)
{
*x = *x + 2;
*y = *y + 2;
}
Contoh eksekusi:
Nilai awal: a = 3 b = 7
Nilai akhir: a = 5 b = 9
 Pointer Sebagai Keluaran Fungsi
Suatu fungsi dapat dibuat agar keluarannya berupa
pointer.Misalnya,suatu fungsi menghasilkan keluaran berupa pointer yang
menunjuk ke string nama bulan, seperti pada contoh berikut:
char *nama_bulan(int n)
{

22
static char *bulan[] =
{ “Kode bulan salah”,
“Januari”,
“Februari”,
“Maret”,
“April”,
“Mei”,
“Juni”,
“Juli”,
“Agustus”,
“September”,
“Oktober”,
“November”,
“Desember”,

Return ( (n<1 || n>12) ? bulan[0] : bulan[n] );

Pada definisi fungsi di atas,

char*nama_bulan

menyatakan bahwa keluaran fungsi nama_bulan() berupa pointer yang menunjuk


ke obyek bertipe char atau string.

Dalam fungsi nama_bulan(),mula-mula array bernama bulan


dideklarsikan dan sekaligus diinisialisasi agar menunjuk sejumlah string yang
menyatakan nama bulan. Di bagian fungsi ,pernyataan

Return ( (n<1 || n>12) ? bulan[0]: bulan[n] );

Menyatakan bahwa hasil fungsi berupa pointer yang menunjukkan ke:

23
 String “Kode bulan salah” (bulan[0] jika masukan fungsi: n<1 atau n>12
 Bulan[n] untuk n yang terletak antara 1 sampai dengan 12.

Berikut contoh program fungsi dengan keluaran berupa pointer yang


menunjuk string

#include <stdio.h>
char *nama_bulan(int n);
main(){
int bl;

printf(“Bulan (1..12): ”);


scanf(“%d”, &bl);
printf(“%s\n”, nama_bulan(bl) );
}
char *nama_bulan(int n){
static char *bulan[]=
{ “Kode bulan salah”,
“Januari”,
“Februari”,
“Maret”,
“April”,

“Mei”,

“Juni”,

“Juli”,

“Agustus”,

“September”,

“Oktober”,

24
“November”,

“Desember”,

};

Return (n<1 || n>12) ? bulan[0] : bulan[n] );

Contoh eksekusi:

Bulan (1..12): 13

Kode bulan salah

Bulan (1..12): 4

April

1.13. Cara Membuat Pointer

Pointer dibuat dengan menambahkan simbol * (asterik) di depan


namanya, kemudian diisi dengan alamat memori yang akan digunakan sebagai
referensi.

Contoh:

Maka *pointer1 akan bisa mengakses data yang ada pada alamat
memori 00001. Dengan kata lain, si *pointer1 akan menggunakan alamat 00001
sebagai referensinya. Kita juga bisa membuat pointer tanpa harus mengisinya
langsung dengan alamat memori.

25
Maka *pointer_ku akan menggunakan alamat memori 00000, alamat
memori ini khusus untuk menyimpan data null atau data kosong.

Sekarang masalahnya kita tidak bisa lihat daftar alamat memori secara
langsung, kita akan kesulitan memberikan referensi alamat memori untuk
pointer.Solusi dari permasalahan ini adalah Kita harus mengambil alamat memori
dari variabel yang lain dengan menggunakan simbol &

Perhatikan gambar berikut:

Pada gambar ini, kita membuat pointer dengan nama *ptr_hp* dengan isi alamat
memori dari variabel hp dengan demikian Pointer *ptr_hp akan bisa mengakses
nilai pada alamat memori 02ffd yang mana ini adalah alamat memori dari variabel
hp.Jika kita ingin mengubah nilai pada alamat memori tersebut, maka kita bisa
gunakan pointer *ptr_hp seperti berikut ini:

Maka, sekarang alamat memori 02ffd akan berisi 95 begitu juga dengan
variabel hp.

26
1.13.1. Mengakses data dengan Pointer

Output:

Pointer *ptr_hp berhasil mengubah nilai pada alamat d57ba6c menjadi


95.Saat menggunakan pointer menggunakan tanda * di depan nama pointer untuk
mengakses nilai pada alamat memori. Jika tidak menggunakan tanda ini, maka
akan mendapatkan alamat memori yang di-pointing.

Pointer juga punya alamat memorinya sendiri. Pada contoh di atas, alamat
memori dari pointer *ptr_hp adalah d57ba70.

27
Perhatikan gambar berikut ini:

Alamat memori yang dipakai *ptr_hp adalah 012ef dengan isi alamat
memori 02ffd.

1.14. Operasi Pada Pointer

 Operasi Penugasan

Suatu variable pointer seperti halnya variable yang lain, juga bisa mengalami
operasi penugasan. Nilai dari suatu variable pointer dapat disalin ke variable
pointer yang lain
Operator (&) dalam kaitannya dengan pointer adalah operator yang
mengembalikan alamat memori dari operandnya. Contohnya :
int y = 5; /*deklarasi variabel y*/
int *yPtr; /*deklarasi variabel pointer yPtr*/
yPtr = &y; /*mengisi variabel pointer yPtr dengan
alamat dari variabel y*/
Maka representasi dari operasi penugasan di atas adalah

28
Representasi yang lain, misalnya asumsikan bahwa variabel y berada
pada alokasi memori 600000 dan variabel pointer yPtr berada pada alokasi
memori 500000.

Contoh program:

Ouput :

29
 Operasi Aritmatika

Suatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan


nilai integer saja. Operasi yang biasa dilakukan adalah operasi penambahan dan
pengurangan.Operasi penambahan dengan suatu nilai menunjukkan lokasi data
berikutnya (index selanjutnya) dalam memori. Begitu juga operasi pengurangan.

Asumsikan kita telah mendeklarasikan sebuah array float v[5], dan


anggap elemen pertamanya berada pada lokasi 3000 di memori. Lalu kita
deklarasikan sebuah variabel pointer *vPtr, ada dua cara untuk mengisi variabel
pointer *vPtr dengan alamat dari elemen pertama array v, yaitu :

float *vPtr = v;

float *vPtr = &v[0];

30
Jika kita melakukan operasi aritmatika seperti

vPtr += 2;

dalam perhitungan aritmatika biasa, maka vPtr yang semula berisi 3000 menjadi
3000 + 2 = 3002, namun ini tidak berlaku pada pointer. Operasi aritmatika pada
pointer di atas artinya adalah vPtr yang semula menunjuk pada v[0] sekarang
menunjuk ke v[2].Karena vPtr menunjuk alamat memori dari variabel v yang
bertipe float, maka vPtr sekarang berisi 3008 (3000 + 2 * 4).

Contoh program :

Output:

31
1.15. Struktur Dan Pointer

Pointer ke Struktur

Jika suatu struktur mengandung banyak field dan diputuskan bahwa


keseluruhan field akan diisi oleh fungsi,maka cara yang efisien adalah dengan
melewatkan alamat struktur,Dengan demikian pada pendefinisian fungsi
parameter formal nya berupa pointer yang menunjukkan ke struktur.Argumen dari
fungsi tukar_xy() dapat disederhanakan menjadi satu argument saja,yakni sebagai
berikut:

void tukar_xy(struct koordinat *pos_xy)

int z;

z = (*pos_xy).x;

(*pos_xy).x = (*pos_xy).y;

(*pos_xy).y = z;

Pada definisi fungsi di atas

struct koordinat *pos_xy

menyatakan bahwa post_xy adalah pointer yang menunjuk ke obyek yang bertipe
struktur coordinat.Adapun penulisan nya seperti di bawah ini

(*pos_xy).x

Menyatakan: “elemen bernama x yang ditunjuk oleh pointer pos_xy”.

Penulisan tanda kurung seperti pada contoh (*pos_xy).x merupakan suatu


keharusan dikarenakan

*pos_xy.x

32
Mempunyai makna yang berbeda dengan

(*pos_xy).x

Ungkapan *pos_xy.x mempunyai makna yaitu “yang ditunjukkan oleh pos_xy.x”


(Sebab operator titik mempunyai prioritas yang lebih tinggi daripada operator *)

Contoh Program:

Ouput:

33
BAB II

KESIMPULAN

 Pointer adalah tipe data yang nilainya mengacu pada nilai lain yang
disimpan di tempat lain di memori komputer menggunakan alamatnya.
Pointer dilambangkan dengan simbol ‘*’.
 Fungsi utama pointer yaitu memungkinkan suatu program agar
melaksanakan kerja lebih efisien dan praktis.
 Pointer mengambil address dari suatu variabel. Address merupakan alamat
lokasi suatu memori dari sebuah variabel. Address berupa angka random
atau angka acak dari sebuah variabel.

34
DAFTAR PUSTAKA
https://dyclassroom.com/c/c-pointers-and-strings
https://www.petanikode.com/c-pointer/
http://moenawar.web.id/wp-content/uploads/2018/03/SD-Lab-5-6-pointer-
dan-fungsi.pdf
https://www.sobatambisius.com/2021/09/belajar-bahasa-c-7-pointer.html
https://www.belajarstatistik.com/blog/2021/12/04/pointer-dalam-bahasa-c/

35

Anda mungkin juga menyukai