Pointer. Objektif. Bahan Bacaan

dokumen-dokumen yang mirip
Minggu ke-10 Pointer. Pendahuluan. Objektif. Bahan Bacaan

Fungsi (Function) Pendahuluan. Objektif. Bahan Bacaan

Minggu ke-11 Fungsi (Function)

Tipe Data. Pendahuluan. Objektif. Bahan Bacaan

Struct dan Fungsi. Pendahuluan. Objektif. Bahan Bacaan

Minggu ke-14 Typedef, Struct & Command Line Argument

Array (Single Dimension)

MODUL. Pointer. Modul Praktikum C++ Dasar Pemrograman Komputer JURUSAN TEKNIK ELEKTRO FAKULTAS TEKNIK

Array (Single Dimension)

INF-103 Pemrograman II VECTOR & STRING. Dr. Taufik Fuadi Abidin, M.Tech Irvanizam Zamanhuri, M.Sc. Program Studi Informatika FMIPA UNIVERSITAS KUALA

Typedef dan Struct. Pendahuluan. Objektif. Bahan Bacaan

Minggu ke-12 Built-in Function

File. Dalam bahasa pemrograman C, terdapat dua jenis stream: teks (ASCII) dan binari. Minggu ini, FILE dan stream jenis teks akan dibahas.

Achmad Solichin.

Algoritme dan Pemrograman

Minggu ke-13 Berkas (File)

PRAKTIKUM 11 POINTER 1

Minggu ke-3 Tipe Data Dalam C

PRAKTIKUM 11 POINTER 1

Pointer dan Referensi

Pernyataan (Statement) dan Input/Output

Algoritma Pemrograman & Struktur Data

12/29/2011 ILKOM IPB 1. Algoritme dan Pemrograman. Address and Pointers. Pointer

MODUL V POINTER DAN STRING

Pernyataan (Statement)

Seluruh elemen di dalam struktur array mempunyai tipe data yang sama. Random Access

ARRAY. Karakteristik

POINTER I. Oleh : Mike Yuliana PENS-ITS

KARAKTER DAN STRING, ARRAY, STRUCT DAN REVIEW PADA BAHASA C

POINTER. Tim Alpro Teknik Informatika

1 MODUL 8 POINTER MODUL 8 POINTER

Penambahan Simpul (Node)

BAB 10 POINTER 5.1 Tujuan 5.2 Pengertian Pointer Perubah dinamis pointer

MAKALAH POINTER PADA BAHASA C

ALGORITMA DAN STRUKTUR DATA POINTER DAN FUNCTION

Pemrograman Dasar C. Minggu 9

A. TUJUAN 1. Menjelaskan tentang konsep dari variabel pointer. zzzz. Address. Gambar 8.1 Variabel pointer px menunjuk ke variabel x

pada program di atas, akan ditampilkan alamat memori dari variabel x, bukan nilai x.

Pointer. Yuliana Setiowati

Konsep Pemrograman. Bab 13. Pointer 3. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

Pointer. Pointer adalah variabel yang menyimpan alamat dari variabel yang lainnya. Deklarasi pointer : datatype *ptr_name; Contoh:

Algoritma dan Struktur Data. Pertemuan 5 Pointer

BAB VIII POINTER. Tujuan :

E STRUKTUR DATA & E PRAKTIK STRUKTUR DATA. Pointer & Function. Alfa Faridh Suni, S.T., M.T. PTIK

DIKTAT MATA KULIAH PEMROGRAMAN I BAB XI POINTER

ARRAY & POINTER. Listing 8.1. EXPENSES.C demonstrates the use of an array. AP3: Array & Pointer

PRAKTIKUM 12 POINTER 2

PERTEMUAN VI POINTER 6.1 Tujuan Praktikum 6.2 Teori Penunjang Pointer

POINTER. Pemrograman Bahasa C++

POINTER DASAR PEMROGRAMAN

BAB IX LINKED LIST (SENARAI BERANTAI)

Algoritma dan Pemrograman Lanjut. Pertemuan Ke-10 Pointer 1

Algoritma dan Struktur Data Praktikum 3. Pointer

Pointer, File Header & Makro

Pemrograman Dasar C. Minggu 10

Tipe Data dan Operator

Bahasa C Array. Slide diambil dari MK Dasar-Dasar Pemrograman Fasilkom UI Dimodifikasi dan disesuaikan dngn kebutuhan pengajaran di PTI-Undiksha

Larik/ Array int a1, a2, a3, a4, a5;

Array (Larik) Modul 7

Pointer 2 A. TUJUAN PEMBELAJARAN. 1. Memahami tentang Pointer to Array 2. Memahami tentang Pointer to String

Algoritme dan Pemrograman

PRAKTIKUM 10 STRING A B C D E \0. Gambar 11.1 Komposisi penyimpanan string dalam memori

POINTER. Tim Alpro Teknik Informatika

ABSTRACT DATA TYPE (ADT) Dr. Taufik Fuadi Abidin, M.Tech Irvanizam Zamanhuri, M.Sc

MODUL 7 FUNGSI A. Tujuan. B. Petunjuk. C. Dasar Teori

Pendahuluan Pemrograman Mikrokontroler

Pointer (Penunjuk) Modul 6

xxxx alamat Praktikum 11 POINTER

SINGLE LINKED LIST (NON CIRCULAR)

Struktur Dasar Bahasa C Tipe Data Dalam bahasa C terdapat lima tipe data dasar, yaitu :

P3 Dasar Struktur Data TIF42/SIF42

Konsep Pemrograman. Bab 12. Pointer 2. Konsep Pemrograman Politeknik Elektronika Negeri Surabaya 2006 PENS-ITS. Umi Sa adah

C V.S. C++ Oleh : Rasim

POINTER. Praktikum 10 (3/5) A. TUJUAN 1. Menjelaskan tentang Pointer to Array 2. Menjelaskan tentang Pointer to String

Pointer dan Array Dinamik. IF2121 / Algoritma dan Struktur Data Sem /2018


MAKALAH STRUKTUR DATA. DOSEN PEMBIMBING Nisa miftachurohmah, S.kom., M.Si PENYUSUN SITI JAMILATUL MU ADDIBAH ( )

Pengenalan C++ Oleh : Dewi Sartika

DISUSUN OLEH BAB XI POINTER. alamat. memori. sepenuhnya. pointer. dan Pointer. menggunakan. menyebabkan. Alamat. untuk.

Binary Search Tree (BST)

ALUR PROGRAM. SELEKSI KONDISI Statement If a. Bentuk If tunggal sederhana Sintaks : if ( kondisi ) statement ;

ALGORITMA DAN PEMROGRAMAN 2. 3 SKS By : Sri Rezeki Candra Nursari

Tabel Informasi. Hal di atas dapat dilakukan dengan menambah dan mengambil atribut identifier yang digunakan pada program, melalui tabel informasi.

Cara pertama adalah pada saat deklarasi variabel ditambahkan ke- yword const sebelum nama tipe data seperti

A R R A Y. Bentuk umum deklarasi array : type nama_array[ukuran] tipe : menyatakan tipe dasar array ukuran : menyatakan banyaknya elemen pada array

ALGORITMA DAN STRUKTUR DATA

Pemrograman Fery Updi,M.Kom

POINTER II. Oleh : Mike Yuliana PENS-ITS

VARIABEL & TIPE DATA PEMROGRAMAN C++

TUGAS TEORI ALGO LANJUT

Pendahuluan Struktur Data. Nisa ul Hafidhoh

LOGIKA ALGORITMA. Pertemuan 9 By: Augury

POINTER. Algoritma dan Pemrograman Tahar Agastani Teknik Informatika UIN Overview. Definisi Pointer Operasi Pointer Pointer dan Argumen Fungsi

BAB III POINTER. Type *variabel-name

Pertemuan 4 ELEMEN-ELEMEN BAHASA PEMROGRAMAN

Pointer di C++ Menurut Frieyadie Edisi Revisi Buku Pemrograman C++ dengan Borland C

Pemrograman Dasar A R R A Y

SOAL C++ Created by Yuli Astuti,S.Kom Copyright 2009

Konsep Array dalam PBO

Praktikum Dasar Pemrograman 2014 MODUL 3: Array dan String

Transkripsi:

Pointer Pointer merupakan variabel yang dapat memegang alamat dari suatu objek dalam memori. Pointer digunakan dalam program untuk mengakses dan manipulasi data pada alamat tertentu. Dalam ANSI/C, array dan pointer memiliki keterkaitan yang erat. Array dikenal sebagai pointer yang tetap (fixed pointer) sedangkan pointer sangat dinamis, artinya alamat yang dipegang oleh sebuah pointer dapat berubah-ubah. Jika dalam materi fungsi dikenal mekanisme pengiriman suatu parameter via alamat atau (called-by reference), dalam ANSI/C, pengiriman parameter seperti itu dapat dilakukan menggunakan pointer. Objektif Memperkenalkan cara mendeklarasi pointer Menjelaskan cara menggunakan pointer dalam program Menjelaskan konsep dereferensing (menbaca dan memberi nilai yang ditunjuk oleh sebuah pointer) Menjelaskan cara mengakses indeks (subscript) pada array menggunakan pointer Bahan Bacaan Buku pegangan atau bahan-bahan lain yang menjelaskan tentang pointer dalam bahasa pemrograman C. Taufik Fuadi Abidin - Irvanizam, Jurusan Informatika, FMIPA Universitas Syiah Kuala http://www.informatika.unsyiah.ac.id 1

Definisi dan Deklarasi Pointer Definisi Pointer adalah sebuah variabel dengan tipe tertentu yang dapat digunakan untuk mencatat alamat dari suatu variabel yang setipe dengannya, mengakses dan memanipulasi data yang tersimpan dalam alamat tersebut. Jika int x adalah sebuah variable bertipe integer maka &x berarti alamat dari x. Jika p adalah sebuah pointer bertipe integer maka p dapat menyimpan dan memegang alamat dari x tersebut. Deklarasi Pointer Dalam ANSI/C, simbol asterisk * digunakan untuk mendeklarasi sebuah pointer. Bentuk umum pendeklarasian pointer adalah: tipe_data *nama_pointer; Sebagai contoh: int *p; Simbol asterik * memberitahu comler bahwa sebuah pointer bertipe int dideklarasikan. Pendeklarasian seperti contoh di atas hanya memberitahukan comler bahwa p adalah pointer bertipe int tanpa memberikan nilai awal apapun kepada p. Jika sebuah pointer tidak diberi nilai awal secara eksplisit oleh programmer, maka comler secara otomatis memberi nilai NULL sebagai nilai awal kepada pointer tersebut. Salah satu cara menguji apakah sebuah pointer bernilai NULL adalah: if(p == NULL){ : } Taufik Fuadi Abidin - Irvanizam, Jurusan Informatika, FMIPA Universitas Syiah Kuala http://www.informatika.unsyiah.ac.id 2

Visualisasi Pointer Perhatikan pernyataan di bawah ini: int i = 2; int * = &i; Pernyataan di atas dapat divisualisasi sebagai berikut: i = 2 Atau dengan kata lain, sebuah variabel i bertipe int dengan nilai awal 2 dideklarasikan dan sebuah pointer bertipe int dideklarasikan dengan nilai awal dari pointer tersebut adalah alamat dari variabel i. Pernyataan: int * = &i; Berarti mendeklarasi sebuah pointer bertipe int dengan nilai awal berupa alamat dari i yang bertipe int. Simbol & pada pernyataan di atas merupakan operator unari yang bermakna alamat (address). Taufik Fuadi Abidin - Irvanizam, Jurusan Informatika, FMIPA Universitas Syiah Kuala http://www.informatika.unsyiah.ac.id 3

Operator Dereferencing Operator dereferencing bermakna pembacaan dan pemberian nilai pada alamat yang dipegang oleh sebuah pointer. Operator deferencing juga menggunakan simbol asterik * teta berbeda maknanya dengan simbol asterik yang digunakan pada saat sebuah pointer dideklarasikan. Perhatikan pernyataan berikut: int i = 2; int *; = &i; * = 12; printf("%d\n", i); Hasil keluaran dari program di atas adalah 12. Hal ini terjadi karena i yang pada awalnya bernilai 2 berubah nilainya akibat dari pernyataan * = 12. Simbol asterik pada pernyataan adalah operator dereferencing yang mengubah nilai dari suatu memori yang ditunjuk oleh pointer. Pada contoh di atas memegang (tunjuk ke) alamat i. Pernyataan dereferencing * = 12 mengakibatkan nilai i berubah menjadi 12. Taufik Fuadi Abidin - Irvanizam, Jurusan Informatika, FMIPA Universitas Syiah Kuala http://www.informatika.unsyiah.ac.id 4

Operator Dereferencing (Lanjutan) Contoh: int i = 2; int j = 3; int *; int *pj; = &i; pj = ; *pj = 20; printf("%d\n", i); pj = &j; = pj; * = 30; printf("%d\n", j); Keluaran dari potongan program tersebut secara berurut adalah: 20 dan 30 Terlihat bahwa variabel i yang pada awalnya bernilai 2 berubah menjadi 20 akibat dari dereferencing pointer pj atau *pj = 20; sedangkan nilai dari j yang pada awalnya bernilai 3 berubah menjadi 30 akibat dari dereferencing pointer atau * = 30; Taufik Fuadi Abidin - Irvanizam, Jurusan Informatika, FMIPA Universitas Syiah Kuala http://www.informatika.unsyiah.ac.id 5

Operator Dereferencing (Lanjutan) Visualisasi langkah demi langkah dari contoh program sebelumnya adalah sebagai berikut: int i = 2; int j = 3; int *; int *pj; i= 2 j= 3 pj Selanjutnya, pernyataan: = &i; pj = ; NULL NULL mengakibatkan menampung alamat dari i dan pj sama dengan. Ilustrasinya: i = 2 j = 3 pj Taufik Fuadi Abidin - Irvanizam, Jurusan Informatika, FMIPA Universitas Syiah Kuala http://www.informatika.unsyiah.ac.id 6

Operator Dereferencing (Lanjutan) Pernyataan: *pj = 20; printf("%d\n", i); mengakibatkan nilai dalam memori yang ditunjuk oleh pointer pj dalam hal ini adalah i berubah menjadi 20. i = 20 j = 3 Kemudian pernyataan: pj = &j; = pj; pj mengakibatkan arah dari pointer pj berubah menjadi menunjuk ke alamat dari variabel j yang juga bertipe int. Selanjutnya, pointer menampung juga nilai dari alamat j yang sebelumnya telah ditunjuk oleh pointer pj. i= 20 j= 3 pj Taufik Fuadi Abidin - Irvanizam, Jurusan Informatika, FMIPA Universitas Syiah Kuala http://www.informatika.unsyiah.ac.id 7

Operator Dereferencing (Lanjutan) Pernyataan: * = 30; printf("%d\n", j); mengakibatkan nilai dari variabel yang ditunjuk oleh berubah menjadi 30 akibat adanya pernyataan dereferencing * = 30, atau bila divisualisasi sebagai berikut: i= 20 j= 30 pj Kesimpulan Dengan menggunakan pointer dan operator dereferencing, nilai dari suatu variabel dalam memori dapat dengan mudah dimanipulasi. Hal ini membuat pointer menjadi sangat powerful dalam pemrograman ANSI/C, terutama dalam pengiriman variabel-variabel dengan memori besar via parameter fungsi (akan dibahas pada pertemuan ke-12). Namun, kecerobohan dalam menggunakan pointer juga dapat mengakibatkan bugs atau error. Oleh karena itu, penggunaan pointer dalam pemrograman harus dilakukan secara benar dan hati-hati. Taufik Fuadi Abidin - Irvanizam, Jurusan Informatika, FMIPA Universitas Syiah Kuala http://www.informatika.unsyiah.ac.id 8

Pointer versus Array Bila sebuah array dideklarasikan sebagai berikut: int a[6] = {8, 4, 6, 3, 4, 10}; 2310 2318 2326 8 4 6 3 4 10 a 2314 2322 2330 alamat Pada pertemuan sebelumnya, telah dibahas penggunaan operator [] pada array. Operator [] dapat digunakan untuk membaca data pada indeks tertentu, misalnya indeks ke 2 dalam array dengan menulis a[2]. Karena a adalah sebuah array dan juga merupakan sebuah pointer maka operator dereferencing pun dapat diaplikasikan pada a. Ilustrasi Sederhana *(a+2) = *(a + sizeof(a) * 2) = *(a + 4 * 2) = *(2310 + 8) a[2] = 6 = *(2318) = 6 Taufik Fuadi Abidin - Irvanizam, Jurusan Informatika, FMIPA Universitas Syiah Kuala http://www.informatika.unsyiah.ac.id 9

Pointer dan String String Bahasa pemrograman ANSI/C tidak menyediakan tipe data string. String dalam pemrograman ANSI/C direpresentasikan menggunakan pointer bertipe char. Perhatikan deklarasi berikut: char *str = "Pemrograman C"; Contoh: #include <stdlib.h> #include <stdio.h> #include <string.h> int main(void){ char ch[80], *pch = &ch[0]; strcpy(ch, "informatika"); putchar(*pch++); putchar((*pch)++); putchar(*++pch); putchar(*++pch); putchar(++*pch); putchar(++(*pch)); putchar(++(*pch++)); } ++pch; putchar(++(*++pch)); putchar('\n'); printf("%s\n",ch); return EXIT_SUCCESS; Apakah hasilnya? Taufik Fuadi Abidin - Irvanizam, Jurusan Informatika, FMIPA Universitas Syiah Kuala http://www.informatika.unsyiah.ac.id 10