8 algoprog-pointer

12
Algoritma dan Pemrograman 4/13/2008 Kuliah Minggu ke 11 1 POINTER POINTER Algoritma dan Pemrograman Tahar Agastani Teknik Informatika UIN - 2008 Overview Overview • Definisi Pointer • Operasi Pointer Pointer dan Argumen Fungsi

Transcript of 8 algoprog-pointer

Page 1: 8  algoprog-pointer

Algoritma dan Pemrograman 4/13/2008

Kuliah Minggu ke 11 1

POINTERPOINTER

Algoritma dan PemrogramanTahar Agastani

Teknik Informatika UIN - 2008

OverviewOverview

• Definisi Pointer• Operasi Pointer• Pointer dan Argumen Fungsi

Page 2: 8  algoprog-pointer

Algoritma dan Pemrograman 4/13/2008

Kuliah Minggu ke 11 2

DefinisiDefinisi PointerPointer• Pointer adalah sebuah tipe data.• Anda bisa membuat variabel dari tipe ini

sebagaimana anda lakukan pada tipe-tipe data lain. • Berisi sebuah alamat (address) memori. • Menunjuk (point) ke sebuah tipe data specifik.

int *pointer1 = &x;

0x9060

alamat x

10x2000

int x=1;

OperasiOperasi Pointer Pointer

• Dua operator yang digunakan pada pointer : * (content of) dan & (address of).

• namaPtr = &objek memberi nilai alamat objek kenamaPtr.

• *namaPtr mengakses objek tersebutmelalui pointer.

• Pointer bisa berisi alamat dari pointer yang lain dan pointer disebut pointer-to-pointer

• Deklarasi pointer to pointer sbb:

Type objek;Deklarasi: Type *namaPtr;

type **ptr_to_ptr;

Page 3: 8  algoprog-pointer

Algoritma dan Pemrograman 4/13/2008

Kuliah Minggu ke 11 3

OperasiOperasi Pointer (cont)Pointer (cont)ContohContoh: :

Inisialisasi sebuah integer pointer ke data variable:

int i, *ptr;ptr = &i;*ptr = 5; /* sama artinya dgn i=5 */

Pointer bisa dibandingkan nilainya dengan pointer lain:

if (ptr1 < ptr2) ……

Pointer Pointer dandan ArgumenArgumen FungsiFungsi

x: 1

y: 2tukar x: 2

y: 1

Page 4: 8  algoprog-pointer

Algoritma dan Pemrograman 4/13/2008

Kuliah Minggu ke 11 4

#include <stdio.h>

void TukarSalah(int a, int b){

int tmp;

tmp = a;a = b;b = tmp;

}

int main(){

int x = 1, y = 2;

TukarSalah(x, y);printf(“%d %d\n”, x, y);

}

Solusi 1

#include <stdio.h>

void TukarSalah(int a, int b){

int tmp;

tmp = a;a = b;b = tmp;

}

int main(){

int x = 1, y = 2;

TukarSalah(x, y);printf(“%d %d\n”, x, y);

}

1

2

x:

y:

Solusi 1

0x2000

0x2010

Page 5: 8  algoprog-pointer

Algoritma dan Pemrograman 4/13/2008

Kuliah Minggu ke 11 5

#include <stdio.h>

void TukarSalah(int a, int b){

int tmp;

tmp = a;a = b;b = tmp;

}

int main(){

int x = 1, y = 2;

TukarSalah(x, y);printf(“%d %d\n”, x, y);

}

1

2

x:

y:

1

2

a:

b:

tmp:

Solusi 1

0x2000

0x2010

0x2060

0x2038

0x2040

#include <stdio.h>

void TukarSalah(int a, int b){

int tmp;

tmp = a;a = b;b = tmp;

}

int main(){

int x = 1, y = 2;

TukarSalah(x, y);printf(“%d %d\n”, x, y);

}

1

2

x:

y:

1

2

a:

b:

1tmp:

Solusi 1

0x2000

0x2010

0x2060

0x2038

0x2040

Page 6: 8  algoprog-pointer

Algoritma dan Pemrograman 4/13/2008

Kuliah Minggu ke 11 6

#include <stdio.h>

void TukarSalah(int a, int b){

int tmp;

tmp = a;a = b;b = tmp;

}

int main(){

int x = 1, y = 2;

TukarSalah(x, y);printf(“%d %d\n”, x, y);

}

1

2

x:

y:

2

2

a:

b:

1tmp:

Solusi 1

0x2000

0x2010

0x2060

0x2038

0x2040

#include <stdio.h>

void TukarSalah(int a, int b){

int tmp;

tmp = a;a = b;b = tmp;

}

int main(){

int x = 1, y = 2;

TukarSalah(x, y);printf(“%d %d\n”, x, y);

}

1

2

x:

y:

2

1

a:

b:

1tmp:

Solusi 1

0x2000

0x2010

0x2060

0x2038

0x2040

Page 7: 8  algoprog-pointer

Algoritma dan Pemrograman 4/13/2008

Kuliah Minggu ke 11 7

#include <stdio.h>

void TukarSalah(int a, int b){

int tmp;

tmp = a;a = b;b = tmp;

}

int main(){

int x = 1, y = 2;

TukarSalah(x, y);printf(“%d %d\n”, x, y);

}

1

2

x:

y:

Solusi 1

0x2000

0x2010

#include <stdio.h>

void TukarBenar(int* a, int* b){

int tmp;

tmp = *a;*a = *b;*b = tmp;

}

int main(){

int x = 1, y = 2;

TukarBenar(&x, &y);printf(“%d %d\n”, x, y);

}

Solusi 2

Page 8: 8  algoprog-pointer

Algoritma dan Pemrograman 4/13/2008

Kuliah Minggu ke 11 8

#include <stdio.h>

void TukarBenar(int* a, int* b){

int tmp;

tmp = *a;*a = *b;*b = tmp;

}

int main(){

int x = 1, y = 2;

TukarBenar(&x, &y);printf(“%d %d\n”, x, y);

}

1

2

x:

y:

Solusi 2

0x2000

0x2010

#include <stdio.h>

void TukarBenar(int* a, int* b){

int tmp;

tmp = *a;*a = *b;*b = tmp;

}

int main(){

int x = 1, y = 2;

TukarBenar(&x, &y);printf(“%d %d\n”, x, y);

}

1

2

x:

y:

addr of x

addr of y

a:

b:

tmp:

Solusi 2

0x2000

0x2010

0x2060

0x2038

0x2040

Page 9: 8  algoprog-pointer

Algoritma dan Pemrograman 4/13/2008

Kuliah Minggu ke 11 9

#include <stdio.h>

void TukarBenar(int* a, int* b){

int tmp;

tmp = *a;*a = *b;*b = tmp;

}

int main(){

int x = 1, y = 2;

TukarBenar(&x, &y);printf(“%d %d\n”, x, y);

}

1

2

x:

y:

addr of x

addr of y

a:

b:

1tmp:

Solusi 2

0x2000

0x2010

0x2060

0x2038

0x2040

#include <stdio.h>

void TukarBenar(int* a, int* b){

int tmp;

tmp = *a;*a = *b;*b = tmp;

}

int main(){

int x = 1, y = 2;

TukarBenar(&x, &y);printf(“%d %d\n”, x, y);

}

2

2

x:

y:

addr of x

addr of y

a:

b:

1tmp:

Solusi 2

0x2000

0x2010

0x2060

0x2038

0x2040

Page 10: 8  algoprog-pointer

Algoritma dan Pemrograman 4/13/2008

Kuliah Minggu ke 11 10

#include <stdio.h>

void TukarBenar(int* a, int* b){

int tmp;

tmp = *a;*a = *b;*b = tmp;

}

int main(){

int x = 1, y = 2;

TukarBenar(&x, &y);printf(“%d %d\n”, x, y);

}

2

1

x:

y:

addr of x

addr of y

a:

b:

1tmp:

Solusi 2

0x2000

0x2010

0x2060

0x2038

0x2040

#include <stdio.h>

void TukarBenar(int* a, int* b){

int tmp;

tmp = *a;*a = *b;*b = tmp;

}

int main(){

int x = 1, y = 2;

TukarBenar(&x, &y);printf(“%d %d\n”, x, y);

}

2

1

x:

y:

Solusi 2

0x2000

0x2010

Page 11: 8  algoprog-pointer

Algoritma dan Pemrograman 4/13/2008

Kuliah Minggu ke 11 11

Pointer Pointer dandan FungsiFungsi

• Untuk memungkinkan sebuah fungsimengakses dan mengubah sebuah objek.

• Untuk structure besar bisa membuat lebihefisien. (dibahas di Pertemuan 13)

• Gunakan specifier const bila manasebuah konstanta dibutuhkan. (dibahas diPertemuan 13)

LainLain--lain lain TentangTentang PointerPointer

• Anda bisa mencetak alamat yang disimpan dalamsebuah pointer dengan menggunakan conversion specifier %p Contoh: printf(“%p”, numPtr);

scanf() perlu mengetahui dimana menaruh nilai -jadi membutuhkan alamat dari variabel tersebutdengan mengambil pointer sebagai parameter.

Contoh: int i;

scanf(“%d”, &i);

Page 12: 8  algoprog-pointer

Algoritma dan Pemrograman 4/13/2008

Kuliah Minggu ke 11 12

JadiJadi MengapaMengapa Pointer?Pointer?

• Untuk memodifikasi variabel dalam fungsiyang bukan global atau lokal terhadapfungsi tersebut.

• Untuk menghemat ruang• Untuk menghemat waktu• Untuk menggunakan memori dinamis• Sering digunakan dalam linked structures

LatihanLatihan