SlideShare a Scribd company logo
Struktur Pointer 109 
IX POINTER 
IX.1 Pendahuluan 
- Pointer adalah suatu variabel yang menyimpan alamat dari suatu data, dan bukan menyimpan datanya sendiri. 
- Sebagai contoh, jika px adalah pointer dan x adalah variabel yang ditunjuk oleh px, maka jika px berada pada alamat memori awal 1000, maka px akan berisi 1000, sedangkan datanya sendiri berupa nilai yang ada pada lokasi memori 1000. 
1000? zzzz1000alamatxpx menunjukke variabel x 
Gambar 9.1 Variabel pointer px menunjuk ke variabel x. 
IX.2 Pendeklarasian Variabel Pointer 
- Variabel tipe pointer dideklarasikan dengan bentuk sebagai berikut: 
type *nama_variabel; 
- dengan tipe dapat berupa sembarang tipe data, sedangkan nama_variabel adalah nama dari variabel pointer. Sebagai contoh: 
int px; /* contoh1*/ 
char pch1, pch2; /*contoh2*/ 
- Contoh pertama menyatakan bahwa px adalah variabel pointer yang menunjuk ke suatu data bertipe int. 
- Pada contoh kedua, masing-masing variabel pch1 dan pch2 adalah variabel pointer yang menunjuk ke data bertipe char. 
char *pch1, *pch2; tanda akhirpernyataan deklarasimenyatakanvariabel pointernama variabelpointertipe data yangditunjuk olehvariabel pointer 
Gambar 9.2 Ilustrasi pendeklarasian variabel pointer.
Struktur Pointer 110 
IX.3 Mengatur Pointer Agar Menunjuk ke Variabel Lain 
- Agar suatu pointer menunjuk ke variabel yang lin, mula-mula pointer harus diisi dengan alamat dari variabel yang akan ditunjuk. 
- Untuk menyatakan alamat dari suatu variabel, dapat digunakan operator & (operator alamat, yang bersifat unaray), dengan cara menempatkan operator di depan nama variabel. 
- Sebagai contoh, jika x dideklarasikan sebagai variabel bertipe int, maka 
&x 
- berarti “alamat dari variabel x”. 
- Adapun contoh pemberian alamat ke suatu variabel pointer 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 variabel x. 
- Setelah pernyataan tersebut dieksekusi barulah dapat dikatakan bahwa px menunjuk ke variabel x. 
IX.4 Mengakses Isi Suatu Variabel Melalui Pointer 
- Jika suatu variabel sudah ditunjuk oleh pointer, maka variabel tersebut dapat diakses melalui variabel itu sendiri (disebut sebagai pengaksesan tak langsung), ataupun melalui pointer (disebut pengaksesan langsung). 
- Pengaksesan tak langsung dilakukan dengan menggunakan operator inderection berupa simbol * (bersifat unaray), seperti contoh berikut: 
*px 
- yang menyatakan “isi atau nilai variabel/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. 
- Contoh program berikut memperlihatkan pemakaian variabel pointer.
Struktur Pointer 111 
/* --------------------------------- */ 
/* File program : Pointer.c */ 
/* Contoh pemakaian pointer */ 
/* -------------------------------- */ 
#include <stdio.h> 
main() 
{ 
int x,y; /* x dan y bertipe int */ 
int *px; /* px pointer yang menunjuk */ 
/* obyek bertipe int */ 
x = 87; 
px = &x; /* px berisi alamat dari x */ 
y = *px; /* y berisi nilai yang ditunjuk px */ 
printf("Alamat x = %pn", &x); 
printf("Isi px = %pn", px); 
printf("Isi x = %dn", x); 
printf("Nilai yang ditunjuk px = %dn", *px); 
printf("Nilai y = %dn", y); 
} 
Contoh eksekusi: 
C> Pointer 
Alamat x = 5B87:2230 
Isi px = 5B87:2230 
Isi x = 87 
Nilai yang ditunjuk px = 87 
Nilai y = 87 
Program 9-1. 
- Pada program di atas, dua pernyataan 
px = &x; 
y = *px; 
- sebenarnya dapat digantikan dengan sebuah pernyataan 
y = x;
Struktur Pointer 112 
IX.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. 
- Jika misalnya pointer pu dimaksudkan untuk menunjuk data bertipe int maka data yang akan ditunjuk oleh pointer pu juga harus bertipe int. 
- Suatu kesalahan akan terjadi jika misalnya pointer float digunakan untuk menunjuk data brtipe int. 
IX.6 Mengubah Isi Suatu Variabel Melalui Pointer 
- Contoh berikut memberikan gambaran tentang pengubahan isis suatu variabel secara tak langsung (yaitu melalui pointer). 
- Mula-mula pd dideklarasikan sebagai pointer yang menunjuk ke suatu data bertipe float dan d sebagai variabel bertipe float. 
- Selanjutnya dengan ungkapan 
d = 54.6; 
- digunakan untuk mengisikan nilai 54.6 secara langsung ke variabel d. 
- Perintah pd = &d; 
- Digunakan untuk memberikan alamat dari d ke pd. Dengan demikian pd menunjuk ke variabel d. 
- Sedangkan pernyataan berikut: 
*pd = *pd + 10; (atau: *pd += 10;) 
- merupakan instruksi untuk mengubah nilai variabel d secara tak langsung. 
- Perintah di atas brarti “jumlahkan isi variabel yang ditunjuk oleh pd dengan 10 dan simpan hasilnya ke variabel tersebut”, atau identik dengan pernyataan: 
D = d + 10; 
- Namun seandainya tidak ada instruksi 
Pd = &d; 
- maka pernyataan: 
*pd = *pd + 10;
Struktur Pointer 113 
- tidak akan sama dengan 
d = d + 10; 
/* ---------------------------------- */ 
/* File program : Pointer2.c */ 
/* Pengubahan isi pointer */ 
/* -------------------------------- */ 
#include <stdio.h> 
main() 
{ 
float d, *pd; 
d = 54.6; 
printf("Isi d semula = %gn", d); 
pd = &d; 
*pd = *pd + 10; 
printf("Isi d kini = %gn", d); 
} 
Contoh hasil eksekusi: 
C> Pointer2 
Isi d semula = 54.6 
Isi d kini = 64.6 
Program 9-2 
IX.7 Pointer dan Array 
- Hubungan antara struktur data pointer dan array dalam C sangatlah erat, sebab sesungguhnya array secara internal akan diterjemahkan dalam bentuk pointer. 
- Contoh berikut akan memberi gambaran tentang hubungan antara pointer dan array. Misalnya dalam suatu fungsi dideklarasikan: 
static int tgl_lahir[3] = { 01, 09, 64 }; 
- dan 
int *ptgl;
Struktur Pointer 114 
- Kemudian diberikan pernyataan 
ptgl = &tgl_lahir[0]; 
- 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 seperti di atas, maka 
*ptgl 
- dengan sendirinya menyatakan elemen pertama (berindeks sama dengan nol) dari array tgl_lahir. 
- Contoh di atas dapat dipahami melalui contoh program berikut ini. 
/* ------------------------------------------- */ 
/* File program : Pointer3.c */ 
/* Pointer yang menunjuk array */ 
/* ------------------------------------------- */ 
#include <stdio.h> 
main() 
{ 
static int tgl_lahir[] = {24, 6, 1965 }; 
int *ptgl; 
ptgl = tgl_lahir; /* ptgl berisi alamat array */ 
printf("Nilai yang ditunjuk oleh ptgl = %dn", *ptgl); 
printf("nilai dari tgl_lahir[0] = %dn", tgl_lahir[0]); 
} 
Contoh hasil eksekusi: 
C>Pointer3 
Nilai yang ditunjuk oleh ptgl = 24 
Nilai dari tgl_lahir[0] = 24 
Program 9-3
Struktur Pointer 115 
- Jika ingin menampilkan seluruh elemen array tgl_lahir, maka dapat digunakan perintah 
for(i=0; i<3; i++) 
printf(“%d%, tgl_lahir[i]); 
- Jika diimplementasikan dengan menggunakan pointer 
tgl_lahir[i] 
- dapat digantikan menjadi 
*(ptgl + i) 
- dengan terlebih dahulu mengatur ptgl agar menunjuk ke array tgl_lahir, sehingga penulisan instruksi penampilan isi array tgl_lahir dapat diubah menjadi: 
ptgl = tgl_lahir; 
for (i=0; i<3; i++0 
printf(“%d “, *(ptgl + i)); 
- Secara umum operasi pointer dapat diterangkan sebagai berikut. Misalkan a adalah suatu array, dan pa adalah pointer yang menunjuk array a, maka 
*(pa + i) 
- akan menyatakan elemen array dengan indeks sama dengan i. 
- Jadi 
*(pa + 0) identik dengan a[0] 
*(pa + 1) identik dengan a[1] 
*(pa + 2) identik dengan a[2] 
- Ungkapan seperti 
pa + i 
- memiliki arti “tambahkan nilai pa (berisi alamat) dengan i kali ukuran dari obyek yang ditunjuk oleh pa”. 
- Jika pa dideklarasikan sebagai 
int *pa;
Struktur Pointer 116 
- maka obyek dari pa adalah data int (berukuran 2 byte). 
- Cara lain dalam menampilkan isi suatu array yaitu dengan menaikkan isi variabel pointer dengan menggunakan operator ++. 
*(ptgl + i) 
- dapat diganti menjadi 
ptgl++ 
- Misalkan suatu instruksi: 
int *pa; 
int a[3]; 
- Sesudah pernyataan: pa = a; 
paarray a012indeks 
- Sesudah pernyataan: pa++; 
paarray a012indeks 
IX.8 Array Dari Pointer 
- Suatu array dapat digunakan untuk menyimpan sejumlah pointer. Misal pernyataan: 
char *namahari[10];
Struktur Pointer 117 
- merupakan pernyataan untuk mendeklarasikan array pointer. 
- Array namahari terdiri dari 10 elemen berupa pointer yang menunjuk ke data bertipe char. 
Gambar 9.3 Array Pointer. ? ? ? ? xxxxnamahari 
IX.9 Inisialisasi Array Pointer 
- Array pointer dapat diinisialisasi sewaktu pendeklarasian. Sebagai contoh: 
Static char *namahari[ ] = 
{ “Senin”, 
“Selasa”, 
“Rabu”, 
“Kamis”, 
“Jum’at”, 
“Sabtu” , 
“Minggu” 
}; 
- Pada contoh di atas, 
namahari[0] menunjuk ke string “Senin” 
namahari[1] menunjuk ke string “Selasa” 
namahari[2] menunjuk ke string “Rabu” 
dan seterusnya.
Struktur Pointer 118 
454xxxxnamahari418424431436442448454418424448442436431SENIN0SELASA0RABU0KAMIS0JUMAT0SABTU0MINGGU0 
Gambar 9.4 Array pointer yang menunjuk data string. 
IX.10 Pointer Menunjuk Pointer 
- Suatu pointer bisa saja menunjuk ke pointer lain. Gambar 9.5 memperlihatkan contoh mengenai hal ini. 
Variabelvar_xPointerptr2alamatptr1alamatvar_xnilaiPointerptr1 
Gambar 9.5 Pointer yang menunjuk ke pointer. 
- Untuk membentuk rantai pointer seperti pada gambar di atas, diperlukan pendeklarasian sebagai berikut: 
int var_x; 
int *ptr1; 
int **ptr2; 
- Perhatikan bahwa pada deklarasi di depan: 
o var_x adalah variabel bertipe int. 
o ptr1 adalah variabel pointer yang menunjuk ke data bertipe int.
Struktur Pointer 119 
o ptr2 adalah variabel pointer yang menunjuk ke pointer int (itulah sebabnya deklarasinya berupa : int **ptr2;) 
- Agar ptr1 menunjuk ke variabel var_x, perintah yang diperlukan berupa 
ptr1 = &var_x; 
- Sedangkan supaya ptr2 menunjuk ke ptr1, instruksi yang diperlukan adalah: 
ptr2 = &ptr1; 
- Contoh program berikut memberikan gambaran cara pengaksesan nilai pada var_x melalui pointer ptr1 dan ptr2. 
/* ------------------------------------------- */ 
/* File program : Ptrptr.c */ 
/* Contoh pointer menunjuk pointer */ 
/* ------------------------------------------- */ 
#include <stdio.h> 
main() 
{ 
int var_x = 234; /* variabel int */ 
int *ptr1; /* pointer int */ 
int **ptr2; /* pointer menunjuk pointer int */ 
ptr1 = &var_x; /* ptr1 berisi alamat var_x */ 
ptr2 = &ptr1; /* ptr2 berisi alamat ptr1 */ 
/* Mengakses nilai var_x melalui ptr1 */ 
printf("Nilai var_x = %dn", *ptr1); 
/* Mengakses nilai var_x melalui ptr2 */ 
printf("Nilai var_x = %dn", **ptr2); 
} 
Contoh hasil eksekusi: 
C>Ptrptr 
Nilai var_x = 234 
Nilai var_x = 234 
Program 9-4
Struktur Pointer 120 
IX.11 Pointer dan Fungsi 
- Variabel pointer dapat digunakan sebagai parameter dalam suatu fungsi. 
- Dalam kaitan ini pointer dapat sebagai: 
o Parameter fungsi 
o Keluaran fungsi 
IX.11.1 Pointer Sebagai Parameter Fungsi 
- Penerapan pointer sebagai parameter fungsi yaitu jika diinginkan agar nilai suatu variabel internal dapat diubah oleh fungsi yang dipanggil. 
- Misal pada fungsi berikut: 
void naikkan_nilai (int *x, int *y) 
{ 
*x = *x + 2; 
*y = *y + 2; 
} 
- Fungsi di atas dimaksudkan agar jika dipanggil, variabel yang berkaitan dengan parameter aktual dapat diubah nilainya, yaitu masing-masing dinaikkan sebesar 2. 
- Contoh pemanggilan fungsinya adalah 
naikkan_nilai(&a, &b); 
- Perhatikan bahwa dalam hal ini variabel a dan b harus ditulis diawali dengan operator alamat (&) yang berarti menyatakan alamat variabel, sebab parameter fungsi dalam pendefinisian berupa pointer. 
Program 9-5 
IX.11.2 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.
Struktur Pointer 121 
Char *nama_bulan(int n) 
{ 
static char *bulan[ ] = 
{ “Kode bulan salah”, 
“Januari”, 
“Pebruari”, 
“Maret”, 
“April”, 
“Mei”, 
“Juni”, 
“Juli”, 
“Agustus”, 
“September”, 
“Oktober”, 
“Nopember”, 
“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 dideklarasikan dan sekaligus diinisialisasi agar menunjuk ke sejumlah string yang menyatakan nama bulan. 
- Di bagian akhir fungsi, pernyataan 
return( (n<1 || n>12) ? bulan[0] : bulan[n] ); 
- menyatakan bahwa hasil fungsi berupa pointer yang menunjuk ke: 
o string “Kode ulan salah” (bulan[0]) jika masukan fungsi (n<1 atau n>12) 
o bulan[n] untuk n yang terletak antara 1 sampai 12 
- Contoh program berikut akan memperjelas keterangan di atas. 
/* ----------------------------------------------- */ 
/* File program : Ptrbulan.c */ 
/* Contoh fungsi dengan keluaran berupa */ 
/* pointer yang menunjuk string */ 
/* ----------------------------------------------- */
Struktur Pointer 122 
#include <stdio.h> 
char *nama_bulan(int n); 
main() 
{ 
int bl; 
printf("Bulan (1 .. 12): "); 
scanf("%d", &bl); 
printf("%sn", nama_bulan(bl)); 
} 
char *nama_bulan(int n) 
{ 
static char *bulan[] = 
{ 
"Kode bulan salah", 
"Januari", 
"Pebruari", 
"Maret", 
"April", 
"Mei", 
"Juni", 
"Juli", 
"Agustus", 
"September", 
"Oktober", 
"Nopember", 
"Desember" 
}; 
return((n<1 || n>12) ? bulan[0] : bulan[n]); 
} 
Contoh hasil eksekusi : 
C>Ptrbulan 
Bulan (1 .. 12) : 14 
Kode bulan salah 
C>Ptrbulan 
Bulan(1 .. 12) : 3 
Maret 
Program 9-6

More Related Content

PDF
Asyiknya Belajar Struktur Data di Planet C++
PPT
Pointer
PPT
Materi kuliah 23 pointer part 3
PDF
Pointer c++
DOCX
Fungsi dan Array Pada C++
PPT
Materi kuliah 23 pointer part 3
PDF
3. Pointer dan List Berkait Singly
Asyiknya Belajar Struktur Data di Planet C++
Pointer
Materi kuliah 23 pointer part 3
Pointer c++
Fungsi dan Array Pada C++
Materi kuliah 23 pointer part 3
3. Pointer dan List Berkait Singly

What's hot (18)

PDF
1. Algoritma, Struktur Data dan Pemrograman Terstruktur
PPT
PDF
Pertemuan 6 Fungsi String
PDF
Pengantar Pointer untuk Pembelajaran Struktur Data (Java)
PPT
Pertemuan II Function
PPT
Function
PPT
PDF
Function c++
PDF
Bab ii keg pembel 6 array
PPTX
Algoritma&Pemrograman C++ Pertemuan 10
PDF
Pertemuan 10 Pointer dan Macro
PDF
Cenadep.org - Tutorial Penomoran Transaksi Otomatis Dengan Delphi Dan MySQL
PDF
Arrays c++
DOCX
Laporan
PPT
Spt3102 fungsi(0910)
PPTX
materi Php lanjutan
DOCX
Laporan praktikum modul vii
1. Algoritma, Struktur Data dan Pemrograman Terstruktur
Pertemuan 6 Fungsi String
Pengantar Pointer untuk Pembelajaran Struktur Data (Java)
Pertemuan II Function
Function
Function c++
Bab ii keg pembel 6 array
Algoritma&Pemrograman C++ Pertemuan 10
Pertemuan 10 Pointer dan Macro
Cenadep.org - Tutorial Penomoran Transaksi Otomatis Dengan Delphi Dan MySQL
Arrays c++
Laporan
Spt3102 fungsi(0910)
materi Php lanjutan
Laporan praktikum modul vii
Ad

Viewers also liked (20)

PPT
Perakitan dan Perkembangan
PDF
7 pemanfaatan-wireshark-untuk-snifing
PPT
Perakitan dan perkembangan hs
PDF
Regular properties 2
PDF
Pemrogramanweb
PDF
Komputasi tugas
PDF
Pemrogramanweb
PPT
Perakitan pc
PDF
Brosur mnc purwokerto
PDF
REGULAR LANGUAGE
PDF
Regular expressions 2
DOCX
MAKALAH STACK (TUMPUKAN )
PDF
Bhs assembly
PDF
Ipi15211
PDF
fungsi algoritma
PDF
REGULAR LANGUAGES
PPT
Chapter 1
PDF
2 enkripsi-dan-dekripsi
PDF
Pertemuan 6 sifat sifat bahasa Reguler
PDF
Pemrograman web modul 1 dan 2
Perakitan dan Perkembangan
7 pemanfaatan-wireshark-untuk-snifing
Perakitan dan perkembangan hs
Regular properties 2
Pemrogramanweb
Komputasi tugas
Pemrogramanweb
Perakitan pc
Brosur mnc purwokerto
REGULAR LANGUAGE
Regular expressions 2
MAKALAH STACK (TUMPUKAN )
Bhs assembly
Ipi15211
fungsi algoritma
REGULAR LANGUAGES
Chapter 1
2 enkripsi-dan-dekripsi
Pertemuan 6 sifat sifat bahasa Reguler
Pemrograman web modul 1 dan 2
Ad

Similar to Ix struktur pointer (20)

PPT
Pertemuan5.ppt
PPT
Pertemuan6.ppt
PPT
Materi kuliah 23 pointer part 3
 
PPTX
Structure and pointer
PPTX
ppt array di kirim.pptx ppt array........
PPT
Materi kuliah 23 pointer part 3
PDF
6. pemrograman pointer
PPTX
7 pointer
PPTX
7 pointer
PPTX
7 pointer
PPTX
7 pointer
PPTX
7 pointer - copy
PPTX
7.pointer
PPTX
7 pointer - copy
PPTX
7 pointer - copy
PPT
Pointer
PPTX
Kelompok 6 pemrograman dasasr c++(1).pptx
PDF
7. pemrograman struktur
PDF
latkisikisi_uas_dasar_pemrograman_untuk_pemula.pdf
PPTX
Algoritma&Pemrograman C++ Pertemuan 11
Pertemuan5.ppt
Pertemuan6.ppt
Materi kuliah 23 pointer part 3
 
Structure and pointer
ppt array di kirim.pptx ppt array........
Materi kuliah 23 pointer part 3
6. pemrograman pointer
7 pointer
7 pointer
7 pointer
7 pointer
7 pointer - copy
7.pointer
7 pointer - copy
7 pointer - copy
Pointer
Kelompok 6 pemrograman dasasr c++(1).pptx
7. pemrograman struktur
latkisikisi_uas_dasar_pemrograman_untuk_pemula.pdf
Algoritma&Pemrograman C++ Pertemuan 11

More from Dhan junkie (11)

PPTX
Pengenalan hardware
PPT
Bios partisi format
PDF
Laporan tahunan-adira-finance-2011
PPT
Bab 1 proposisi
PDF
Assembly ok3
PDF
8 keamanan-web-server
PDF
6 subnetting
PDF
6 keamanan-jaringan
PDF
5 keamanan-database
PDF
4 keamanan-malware
PDF
3 keamanan-sistem-operasi
Pengenalan hardware
Bios partisi format
Laporan tahunan-adira-finance-2011
Bab 1 proposisi
Assembly ok3
8 keamanan-web-server
6 subnetting
6 keamanan-jaringan
5 keamanan-database
4 keamanan-malware
3 keamanan-sistem-operasi

Recently uploaded (20)

DOCX
CONTOH RANCANGAN MODUL PROYEK KOKURIKULER SMA 1.docx
PPTX
ppt kelas XII materi sifat koligatif larutan
PPSX
Teknik Trading Selang Seling Yang Dapat Digunakan Untuk Trading Manual Maupun...
PPTX
9ICP - Hubungan antara Pancasila dengan UUD 1945Bhinneka Tunggal Ika.pptx
PPTX
Modul 4 Asesmen-dalam-Pembelajaran-Mendalam.pptx
PPTX
Pancasila: fondasi peradaban dan kebudayaan berkelanjutan
PPTX
Keragaman kerajinan tangan mancanegara.pptx
PPT
SEJARAH kelas 12 SEMESTER SATU DAN DUA.ppt
PPTX
XI BAB 7 SISTEM PERNAPASAN pada kelas xi
DOCX
Modul Ajar Deep Learning PAI & BP Kelas 11 SMA Terbaru 2025
PDF
ANALISIS SOALAN BAHASA MELAYU SPM 2021-2024 (1).pdf
DOCX
Modul Ajar Deep Learning Bahasa Inggris Lanjutan Kelas 11 SMA Terbaru 2025
PDF
2. Capaian-Pembelajaran-Koding-Dan-Kecerdasan-Artifisial-Pusbuk.pdf
DOCX
LKPD_Bab_1_Informatika_Kelas_9. : Informatika dan Keterampilan Generikdocx
PDF
Pengenalan Undang-undang pengakap laut.pdf
DOCX
Modul Ajar Deep Learning PJOK Kelas 12 SMA Terbaru 2025
PDF
lembar kerja LMS tugas pembelajaran mendalam
PPTX
2. Modul 2 Fase C Berpikir Komputasional.pptx
DOCX
Modul Ajar Deep Learning Prakarya Kerajinan Kelas 12 SMA Terbaru 2025
PPTX
Bahan Presentasi Persamaan Elips .pptx
CONTOH RANCANGAN MODUL PROYEK KOKURIKULER SMA 1.docx
ppt kelas XII materi sifat koligatif larutan
Teknik Trading Selang Seling Yang Dapat Digunakan Untuk Trading Manual Maupun...
9ICP - Hubungan antara Pancasila dengan UUD 1945Bhinneka Tunggal Ika.pptx
Modul 4 Asesmen-dalam-Pembelajaran-Mendalam.pptx
Pancasila: fondasi peradaban dan kebudayaan berkelanjutan
Keragaman kerajinan tangan mancanegara.pptx
SEJARAH kelas 12 SEMESTER SATU DAN DUA.ppt
XI BAB 7 SISTEM PERNAPASAN pada kelas xi
Modul Ajar Deep Learning PAI & BP Kelas 11 SMA Terbaru 2025
ANALISIS SOALAN BAHASA MELAYU SPM 2021-2024 (1).pdf
Modul Ajar Deep Learning Bahasa Inggris Lanjutan Kelas 11 SMA Terbaru 2025
2. Capaian-Pembelajaran-Koding-Dan-Kecerdasan-Artifisial-Pusbuk.pdf
LKPD_Bab_1_Informatika_Kelas_9. : Informatika dan Keterampilan Generikdocx
Pengenalan Undang-undang pengakap laut.pdf
Modul Ajar Deep Learning PJOK Kelas 12 SMA Terbaru 2025
lembar kerja LMS tugas pembelajaran mendalam
2. Modul 2 Fase C Berpikir Komputasional.pptx
Modul Ajar Deep Learning Prakarya Kerajinan Kelas 12 SMA Terbaru 2025
Bahan Presentasi Persamaan Elips .pptx

Ix struktur pointer

  • 1. Struktur Pointer 109 IX POINTER IX.1 Pendahuluan - Pointer adalah suatu variabel yang menyimpan alamat dari suatu data, dan bukan menyimpan datanya sendiri. - Sebagai contoh, jika px adalah pointer dan x adalah variabel yang ditunjuk oleh px, maka jika px berada pada alamat memori awal 1000, maka px akan berisi 1000, sedangkan datanya sendiri berupa nilai yang ada pada lokasi memori 1000. 1000? zzzz1000alamatxpx menunjukke variabel x Gambar 9.1 Variabel pointer px menunjuk ke variabel x. IX.2 Pendeklarasian Variabel Pointer - Variabel tipe pointer dideklarasikan dengan bentuk sebagai berikut: type *nama_variabel; - dengan tipe dapat berupa sembarang tipe data, sedangkan nama_variabel adalah nama dari variabel pointer. Sebagai contoh: int px; /* contoh1*/ char pch1, pch2; /*contoh2*/ - Contoh pertama menyatakan bahwa px adalah variabel pointer yang menunjuk ke suatu data bertipe int. - Pada contoh kedua, masing-masing variabel pch1 dan pch2 adalah variabel pointer yang menunjuk ke data bertipe char. char *pch1, *pch2; tanda akhirpernyataan deklarasimenyatakanvariabel pointernama variabelpointertipe data yangditunjuk olehvariabel pointer Gambar 9.2 Ilustrasi pendeklarasian variabel pointer.
  • 2. Struktur Pointer 110 IX.3 Mengatur Pointer Agar Menunjuk ke Variabel Lain - Agar suatu pointer menunjuk ke variabel yang lin, mula-mula pointer harus diisi dengan alamat dari variabel yang akan ditunjuk. - Untuk menyatakan alamat dari suatu variabel, dapat digunakan operator & (operator alamat, yang bersifat unaray), dengan cara menempatkan operator di depan nama variabel. - Sebagai contoh, jika x dideklarasikan sebagai variabel bertipe int, maka &x - berarti “alamat dari variabel x”. - Adapun contoh pemberian alamat ke suatu variabel pointer 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 variabel x. - Setelah pernyataan tersebut dieksekusi barulah dapat dikatakan bahwa px menunjuk ke variabel x. IX.4 Mengakses Isi Suatu Variabel Melalui Pointer - Jika suatu variabel sudah ditunjuk oleh pointer, maka variabel tersebut dapat diakses melalui variabel itu sendiri (disebut sebagai pengaksesan tak langsung), ataupun melalui pointer (disebut pengaksesan langsung). - Pengaksesan tak langsung dilakukan dengan menggunakan operator inderection berupa simbol * (bersifat unaray), seperti contoh berikut: *px - yang menyatakan “isi atau nilai variabel/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. - Contoh program berikut memperlihatkan pemakaian variabel pointer.
  • 3. Struktur Pointer 111 /* --------------------------------- */ /* File program : Pointer.c */ /* Contoh pemakaian pointer */ /* -------------------------------- */ #include <stdio.h> main() { int x,y; /* x dan y bertipe int */ int *px; /* px pointer yang menunjuk */ /* obyek bertipe int */ x = 87; px = &x; /* px berisi alamat dari x */ y = *px; /* y berisi nilai yang ditunjuk px */ printf("Alamat x = %pn", &x); printf("Isi px = %pn", px); printf("Isi x = %dn", x); printf("Nilai yang ditunjuk px = %dn", *px); printf("Nilai y = %dn", y); } Contoh eksekusi: C> Pointer Alamat x = 5B87:2230 Isi px = 5B87:2230 Isi x = 87 Nilai yang ditunjuk px = 87 Nilai y = 87 Program 9-1. - Pada program di atas, dua pernyataan px = &x; y = *px; - sebenarnya dapat digantikan dengan sebuah pernyataan y = x;
  • 4. Struktur Pointer 112 IX.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. - Jika misalnya pointer pu dimaksudkan untuk menunjuk data bertipe int maka data yang akan ditunjuk oleh pointer pu juga harus bertipe int. - Suatu kesalahan akan terjadi jika misalnya pointer float digunakan untuk menunjuk data brtipe int. IX.6 Mengubah Isi Suatu Variabel Melalui Pointer - Contoh berikut memberikan gambaran tentang pengubahan isis suatu variabel secara tak langsung (yaitu melalui pointer). - Mula-mula pd dideklarasikan sebagai pointer yang menunjuk ke suatu data bertipe float dan d sebagai variabel bertipe float. - Selanjutnya dengan ungkapan d = 54.6; - digunakan untuk mengisikan nilai 54.6 secara langsung ke variabel d. - Perintah pd = &d; - Digunakan untuk memberikan alamat dari d ke pd. Dengan demikian pd menunjuk ke variabel d. - Sedangkan pernyataan berikut: *pd = *pd + 10; (atau: *pd += 10;) - merupakan instruksi untuk mengubah nilai variabel d secara tak langsung. - Perintah di atas brarti “jumlahkan isi variabel yang ditunjuk oleh pd dengan 10 dan simpan hasilnya ke variabel tersebut”, atau identik dengan pernyataan: D = d + 10; - Namun seandainya tidak ada instruksi Pd = &d; - maka pernyataan: *pd = *pd + 10;
  • 5. Struktur Pointer 113 - tidak akan sama dengan d = d + 10; /* ---------------------------------- */ /* File program : Pointer2.c */ /* Pengubahan isi pointer */ /* -------------------------------- */ #include <stdio.h> main() { float d, *pd; d = 54.6; printf("Isi d semula = %gn", d); pd = &d; *pd = *pd + 10; printf("Isi d kini = %gn", d); } Contoh hasil eksekusi: C> Pointer2 Isi d semula = 54.6 Isi d kini = 64.6 Program 9-2 IX.7 Pointer dan Array - Hubungan antara struktur data pointer dan array dalam C sangatlah erat, sebab sesungguhnya array secara internal akan diterjemahkan dalam bentuk pointer. - Contoh berikut akan memberi gambaran tentang hubungan antara pointer dan array. Misalnya dalam suatu fungsi dideklarasikan: static int tgl_lahir[3] = { 01, 09, 64 }; - dan int *ptgl;
  • 6. Struktur Pointer 114 - Kemudian diberikan pernyataan ptgl = &tgl_lahir[0]; - 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 seperti di atas, maka *ptgl - dengan sendirinya menyatakan elemen pertama (berindeks sama dengan nol) dari array tgl_lahir. - Contoh di atas dapat dipahami melalui contoh program berikut ini. /* ------------------------------------------- */ /* File program : Pointer3.c */ /* Pointer yang menunjuk array */ /* ------------------------------------------- */ #include <stdio.h> main() { static int tgl_lahir[] = {24, 6, 1965 }; int *ptgl; ptgl = tgl_lahir; /* ptgl berisi alamat array */ printf("Nilai yang ditunjuk oleh ptgl = %dn", *ptgl); printf("nilai dari tgl_lahir[0] = %dn", tgl_lahir[0]); } Contoh hasil eksekusi: C>Pointer3 Nilai yang ditunjuk oleh ptgl = 24 Nilai dari tgl_lahir[0] = 24 Program 9-3
  • 7. Struktur Pointer 115 - Jika ingin menampilkan seluruh elemen array tgl_lahir, maka dapat digunakan perintah for(i=0; i<3; i++) printf(“%d%, tgl_lahir[i]); - Jika diimplementasikan dengan menggunakan pointer tgl_lahir[i] - dapat digantikan menjadi *(ptgl + i) - dengan terlebih dahulu mengatur ptgl agar menunjuk ke array tgl_lahir, sehingga penulisan instruksi penampilan isi array tgl_lahir dapat diubah menjadi: ptgl = tgl_lahir; for (i=0; i<3; i++0 printf(“%d “, *(ptgl + i)); - Secara umum operasi pointer dapat diterangkan sebagai berikut. Misalkan a adalah suatu array, dan pa adalah pointer yang menunjuk array a, maka *(pa + i) - akan menyatakan elemen array dengan indeks sama dengan i. - Jadi *(pa + 0) identik dengan a[0] *(pa + 1) identik dengan a[1] *(pa + 2) identik dengan a[2] - Ungkapan seperti pa + i - memiliki arti “tambahkan nilai pa (berisi alamat) dengan i kali ukuran dari obyek yang ditunjuk oleh pa”. - Jika pa dideklarasikan sebagai int *pa;
  • 8. Struktur Pointer 116 - maka obyek dari pa adalah data int (berukuran 2 byte). - Cara lain dalam menampilkan isi suatu array yaitu dengan menaikkan isi variabel pointer dengan menggunakan operator ++. *(ptgl + i) - dapat diganti menjadi ptgl++ - Misalkan suatu instruksi: int *pa; int a[3]; - Sesudah pernyataan: pa = a; paarray a012indeks - Sesudah pernyataan: pa++; paarray a012indeks IX.8 Array Dari Pointer - Suatu array dapat digunakan untuk menyimpan sejumlah pointer. Misal pernyataan: char *namahari[10];
  • 9. Struktur Pointer 117 - merupakan pernyataan untuk mendeklarasikan array pointer. - Array namahari terdiri dari 10 elemen berupa pointer yang menunjuk ke data bertipe char. Gambar 9.3 Array Pointer. ? ? ? ? xxxxnamahari IX.9 Inisialisasi Array Pointer - Array pointer dapat diinisialisasi sewaktu pendeklarasian. Sebagai contoh: Static char *namahari[ ] = { “Senin”, “Selasa”, “Rabu”, “Kamis”, “Jum’at”, “Sabtu” , “Minggu” }; - Pada contoh di atas, namahari[0] menunjuk ke string “Senin” namahari[1] menunjuk ke string “Selasa” namahari[2] menunjuk ke string “Rabu” dan seterusnya.
  • 10. Struktur Pointer 118 454xxxxnamahari418424431436442448454418424448442436431SENIN0SELASA0RABU0KAMIS0JUMAT0SABTU0MINGGU0 Gambar 9.4 Array pointer yang menunjuk data string. IX.10 Pointer Menunjuk Pointer - Suatu pointer bisa saja menunjuk ke pointer lain. Gambar 9.5 memperlihatkan contoh mengenai hal ini. Variabelvar_xPointerptr2alamatptr1alamatvar_xnilaiPointerptr1 Gambar 9.5 Pointer yang menunjuk ke pointer. - Untuk membentuk rantai pointer seperti pada gambar di atas, diperlukan pendeklarasian sebagai berikut: int var_x; int *ptr1; int **ptr2; - Perhatikan bahwa pada deklarasi di depan: o var_x adalah variabel bertipe int. o ptr1 adalah variabel pointer yang menunjuk ke data bertipe int.
  • 11. Struktur Pointer 119 o ptr2 adalah variabel pointer yang menunjuk ke pointer int (itulah sebabnya deklarasinya berupa : int **ptr2;) - Agar ptr1 menunjuk ke variabel var_x, perintah yang diperlukan berupa ptr1 = &var_x; - Sedangkan supaya ptr2 menunjuk ke ptr1, instruksi yang diperlukan adalah: ptr2 = &ptr1; - Contoh program berikut memberikan gambaran cara pengaksesan nilai pada var_x melalui pointer ptr1 dan ptr2. /* ------------------------------------------- */ /* File program : Ptrptr.c */ /* Contoh pointer menunjuk pointer */ /* ------------------------------------------- */ #include <stdio.h> main() { int var_x = 234; /* variabel int */ int *ptr1; /* pointer int */ int **ptr2; /* pointer menunjuk pointer int */ ptr1 = &var_x; /* ptr1 berisi alamat var_x */ ptr2 = &ptr1; /* ptr2 berisi alamat ptr1 */ /* Mengakses nilai var_x melalui ptr1 */ printf("Nilai var_x = %dn", *ptr1); /* Mengakses nilai var_x melalui ptr2 */ printf("Nilai var_x = %dn", **ptr2); } Contoh hasil eksekusi: C>Ptrptr Nilai var_x = 234 Nilai var_x = 234 Program 9-4
  • 12. Struktur Pointer 120 IX.11 Pointer dan Fungsi - Variabel pointer dapat digunakan sebagai parameter dalam suatu fungsi. - Dalam kaitan ini pointer dapat sebagai: o Parameter fungsi o Keluaran fungsi IX.11.1 Pointer Sebagai Parameter Fungsi - Penerapan pointer sebagai parameter fungsi yaitu jika diinginkan agar nilai suatu variabel internal dapat diubah oleh fungsi yang dipanggil. - Misal pada fungsi berikut: void naikkan_nilai (int *x, int *y) { *x = *x + 2; *y = *y + 2; } - Fungsi di atas dimaksudkan agar jika dipanggil, variabel yang berkaitan dengan parameter aktual dapat diubah nilainya, yaitu masing-masing dinaikkan sebesar 2. - Contoh pemanggilan fungsinya adalah naikkan_nilai(&a, &b); - Perhatikan bahwa dalam hal ini variabel a dan b harus ditulis diawali dengan operator alamat (&) yang berarti menyatakan alamat variabel, sebab parameter fungsi dalam pendefinisian berupa pointer. Program 9-5 IX.11.2 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.
  • 13. Struktur Pointer 121 Char *nama_bulan(int n) { static char *bulan[ ] = { “Kode bulan salah”, “Januari”, “Pebruari”, “Maret”, “April”, “Mei”, “Juni”, “Juli”, “Agustus”, “September”, “Oktober”, “Nopember”, “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 dideklarasikan dan sekaligus diinisialisasi agar menunjuk ke sejumlah string yang menyatakan nama bulan. - Di bagian akhir fungsi, pernyataan return( (n<1 || n>12) ? bulan[0] : bulan[n] ); - menyatakan bahwa hasil fungsi berupa pointer yang menunjuk ke: o string “Kode ulan salah” (bulan[0]) jika masukan fungsi (n<1 atau n>12) o bulan[n] untuk n yang terletak antara 1 sampai 12 - Contoh program berikut akan memperjelas keterangan di atas. /* ----------------------------------------------- */ /* File program : Ptrbulan.c */ /* Contoh fungsi dengan keluaran berupa */ /* pointer yang menunjuk string */ /* ----------------------------------------------- */
  • 14. Struktur Pointer 122 #include <stdio.h> char *nama_bulan(int n); main() { int bl; printf("Bulan (1 .. 12): "); scanf("%d", &bl); printf("%sn", nama_bulan(bl)); } char *nama_bulan(int n) { static char *bulan[] = { "Kode bulan salah", "Januari", "Pebruari", "Maret", "April", "Mei", "Juni", "Juli", "Agustus", "September", "Oktober", "Nopember", "Desember" }; return((n<1 || n>12) ? bulan[0] : bulan[n]); } Contoh hasil eksekusi : C>Ptrbulan Bulan (1 .. 12) : 14 Kode bulan salah C>Ptrbulan Bulan(1 .. 12) : 3 Maret Program 9-6