8 algoprog-pointer
-
Upload
wandi-parlente -
Category
Documents
-
view
273 -
download
1
Transcript of 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
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;
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
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
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
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
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
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
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
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
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);
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