SlideShare une entreprise Scribd logo
1  sur  5
Télécharger pour lire hors ligne
BAB VIII PEMROGRAMAN POINTER
Pertemuan Minggu XI dan XII
Alokasi Waktu

:

4 Jam Pertemuan

Standar Kompetensi

:

Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa
C

Kompetensi Dasar

:

Memahami program komputer yang menggunakan struktur Pointer

Indikator

:

Mahasiswa dapat memahami struktur program bahasa C yang mengandung Pointer

:

Mahasiswa dapat membuat program dengan melibatkan Pointer

pointer adalah variabel yang menyimpan alamat memori. Alamat ini adalah lokasi obyek lain (biasanya
variabel lain) di memori. Misalnya, jika satu variabel berisi alamat dari variabel lain, variabel pertama
dikatakan menunjuk ke variable kedua. Analogy konsep pointer adalah ketika kita ingin berkenalan
dengan seseoarang akan tetapi kita tidak dapat menyapanya secara langsung maka biasanya kita akan
bertanya kepada teman atau sahabatnya yang kebetulan kita kenal. Orang yang kita tanya perihal
seseorang yang ingin kita ketahui identitasnya adalah seorang Pointer (Penunjuk). Analogy yang lain
ketika kita ingin berkunjung ke suatu alamat akan tetapi kita tidak tahu di daerah mana alamat tersebut
berada maka kita akan bertanya kepada orang yang kita anggap tahu tentag alamat tersebut, orang yang
memberikan penjelasan tentang perihal alamat yang kita tanyakan itulah yang kita sebuat dengan Pointer.
Poiter adalah variabel yang berisi alamat memori variabel lain dan secara tidak langsung menunjuk ke
variabel tersebut. Sebagai contoh Andi berteman dengan Budi, lalu anda ingin mengetahui jumlah
keluarga Budi untuk keperluan sensus penduduk. Anda tidak mengetahui alamat Budi, tetapi anda
mengenal Andi. Untuk mencari jumlah keluarga Budi, maka pertama-tama anda pergi ke rumah Andi,
misalnya di rumah No. 8321. Sesampai di Andi, Andi membaritahukan kepada anda bahwa alamat Budi
ada pada alamat 9821. Kemudian anda pergi ke rumah Budi lalu mencatat jumlah keluarga yang dimiliki
Budi yaitu lima orang (misalkan). Dalam contoh di atas, Andi bertindak sebagai pointer. Andi tidak
memberitahukan jumlah keluarga Budi, tetapi Andi memberitahu alamat Budi, di alamat 9821 (alamat
Budi) itulah Anda mengetahui jumlah keluarga Budi. Jika alamat dari ditunjukkan dengan simbol & dan
isi dari ditunjukkan dengan symbol *, maka hubungan analogi di atas adalah:

Jika variabel akan menjadi penunjuk, itu harus dinyatakan sebagai demikian. Sebuah deklarasi pointer
terdiri dari jenis dasar, *, dan nama variabel. Bentuk umum untuk mendeklarasikan variabel pointer
Tipe *nama_variabel

ketika Anda menyatakan pointer brtipe int *, maka compiler mengasumsikan bahwa semua alamat yang
akan ditunjuk oleh varibel pointer tersebut menunjuk ke sebuah variable yang betipe integer.

1
Contoh 8.1
#include <stdio.h>
#include <conio.h>
main()
{
int x = 99;
int *p1, *p2;
p1 = &x;
p2 = p1;
/* print the value of x twice */
printf("Values at p1 and p2: %d % dn", *p1, *p2);
/* print the address of x twice */
printf("Addresses pointed to by p1 and p2: %p %p", p1, p2);
getch();
}

Contoh 8.2
#include <stdio.h>
#include <conio.h>
main()
{
int U = 3;
int v;
int *pu; /* pointer t o an integer */
int *pv; /* pointer t o an integer */
pu = &U; /* assign address of U t o pu */
v = *pu; /* assign value of U t o v */
pv = &v; /* assign address of v t o pv */
printf("nu=%d &u=%X pu=%X *pu=%d", U, &U, pu, *pu);
printf("nnv=%d &v=%X pv=%x *pv=%d", v, &v, pv, *pv);
getch();
}

Pada program diatas menyatakan pointer *s digunakan sebagai penunjuk variable kata yang berbentuk
array dan bertipe char. Pointer *s ini digunakan sebagai argument fungsi hitung yang akan
mengembalikan nilai integer apabila fungsi hitung tersebut dipanggil. Dengan kata lain fungsi hitung akan
memberikan nilai berupa angka dari suatu masukan yang diberikan pada variable kata yang berupa
sederet char (string).
Contoh 8.3
2
#include <stdio.h>
#include <conio.h>
void tukar(int *a, int *b);
main()
{
int x,y;
printf("Masukan nilai ke 1: ");
scanf("%d",&x);
printf("Masukan nilai ke 2: ");
scanf("%d",&y);
tukar(&x,&y);
printf ("Setelah ditukarkan Nilai ke 1 %dn",x);
printf ("Setelah ditukarkan Nilai ke 2 %d",y);
getch();
}
void tukar(int *a, int *b)
{
int smt;
smt = *a;
*a = *b;
*b = smt;
}

Contoh 8.4
#include <stdio.h>
#include <conio.h>
main()
{
int number = 0; /* A variable of type int initialized to 0 */
int *pointer = NULL; /* A pointer that can point to type int */
number = 10;
printf("nnumber's address: %p", &number); /* Output the address */
printf("nnumber's value: %dnn", number); /* Output the value */
pointer = &number; /* Store the address of number in pointer */
printf("pointer's address: %p", &pointer); /* Output the address */
printf("npointer's size: %d bytes", sizeof(pointer)); /* Output the size */
printf("npointer's value: %p", pointer); /* Output the value (an address) */
printf("nvalue pointed to: %dn", *pointer); /* Value at the address */
getch();
}

Contoh 8.5
#include <stdio.h>

3
#include <conio.h>
void funct1 (int U, int v); /* function prototype */
void funct2 (int *pu, int *pv); /* function prototype */
main ()
{
int u = 1;
int v = 3;
printf ( "n Before calling functl : u=%d v=%d", u, v);
funct1 (u, v);
printf ( "n After calling functl : u=%d v=%d", u, v);
printf ("nn Before calling funct2: u=%d v=%d", u, v) ;
funct2(&u, &v);
printf ("n After calling funct2: u=%d v=%d", u, v);
getch();
}
void funct1 (int U, int v)
{
U = 0;
v = 0;
printf ( " n Within functl : u=%d v=%d", U, v);
return;
}
void funct2 (int *pu, int *pv)
{
*pu = 0;
*pv = 0;
printf ("n Within funct2: *pu=%d *pv=%d", *pu, *pv) ;
return;
}

Pengayaan
Latihan 8.1
#include <stdio.h>
#include <conio.h>
int hitung(char *s);
main()
{
char kata[80];
printf("Masukan Sebuah Kata : n");
scanf("%s",&kata);
printf("%d",hitung(kata));
getch();
}
int hitung(char *s)

4
{
int i=0;
for (;*s!='0'; *s++)
i++;
return(i);
}
Latihan 8.2
#include <conio.h>
#include <stdio.h>
#include <stdlib.h>
#define size 10
void push(int i);
int pop(void);
int *tos, *p1, stack[size];
main()
{
int value;
p1 = stack;
tos = stack;
do {
printf("Enter value: ");
scanf("%d", &value);
if(value != 0) push(value);
else {printf("value on top is %dn", pop());
printf("Alamat Memori %pn",(p1+1));}
} while(value != -1);
getch();
}
void push(int i)
{
p1++;
if(p1 == (tos+size))
{
printf("Stack Overflow.n");
exit(1);
}
*p1 = i;
}
int pop(void)
{
if(p1 == tos) {
printf("Stack Underflow. n");
exit(1);
}
p1--;
return *(p1+1);
}

5

Contenu connexe

Tendances

Materi kuliah 23 pointer part 3
Materi kuliah 23   pointer part 3Materi kuliah 23   pointer part 3
Materi kuliah 23 pointer part 3Budi Yono
 
Fungsi dan Array Pada C++
Fungsi dan Array Pada C++Fungsi dan Array Pada C++
Fungsi dan Array Pada C++Toro Jr.
 
Ix struktur pointer
Ix struktur pointerIx struktur pointer
Ix struktur pointerDhan junkie
 
Tugas modul fungsi
Tugas modul fungsiTugas modul fungsi
Tugas modul fungsiFajar Umam
 
Materi kuliah 03 pointer part 1
Materi kuliah 03   pointer part 1Materi kuliah 03   pointer part 1
Materi kuliah 03 pointer part 1Budi Yono
 
Tipe Data pada Bahasa Java
Tipe Data pada Bahasa JavaTipe Data pada Bahasa Java
Tipe Data pada Bahasa JavaAs Faizin
 
Materi kuliah 19 fungsi part 2
Materi kuliah 19   fungsi part 2Materi kuliah 19   fungsi part 2
Materi kuliah 19 fungsi part 2Budi Yono
 
MATERI POINTER TKJ K13
MATERI POINTER TKJ K13MATERI POINTER TKJ K13
MATERI POINTER TKJ K13Ali Must Can
 
Materi kuliah 19 fungsi part 2
Materi kuliah 19   fungsi part 2Materi kuliah 19   fungsi part 2
Materi kuliah 19 fungsi part 2Budi Yono
 

Tendances (14)

Materi kuliah 23 pointer part 3
Materi kuliah 23   pointer part 3Materi kuliah 23   pointer part 3
Materi kuliah 23 pointer part 3
 
Pertemuan 6 Fungsi String
Pertemuan 6 Fungsi StringPertemuan 6 Fungsi String
Pertemuan 6 Fungsi String
 
Pertemuan 10 Pointer dan Macro
Pertemuan 10 Pointer dan MacroPertemuan 10 Pointer dan Macro
Pertemuan 10 Pointer dan Macro
 
Fungsi dan Array Pada C++
Fungsi dan Array Pada C++Fungsi dan Array Pada C++
Fungsi dan Array Pada C++
 
Ix struktur pointer
Ix struktur pointerIx struktur pointer
Ix struktur pointer
 
Tugas modul fungsi
Tugas modul fungsiTugas modul fungsi
Tugas modul fungsi
 
Materi kuliah 03 pointer part 1
Materi kuliah 03   pointer part 1Materi kuliah 03   pointer part 1
Materi kuliah 03 pointer part 1
 
Tipe Data pada Bahasa Java
Tipe Data pada Bahasa JavaTipe Data pada Bahasa Java
Tipe Data pada Bahasa Java
 
Materi kuliah 19 fungsi part 2
Materi kuliah 19   fungsi part 2Materi kuliah 19   fungsi part 2
Materi kuliah 19 fungsi part 2
 
Pertemuan 12 Structure
Pertemuan 12 StructurePertemuan 12 Structure
Pertemuan 12 Structure
 
Chendra (pemrograman)
Chendra (pemrograman)Chendra (pemrograman)
Chendra (pemrograman)
 
Fungsi value
Fungsi valueFungsi value
Fungsi value
 
MATERI POINTER TKJ K13
MATERI POINTER TKJ K13MATERI POINTER TKJ K13
MATERI POINTER TKJ K13
 
Materi kuliah 19 fungsi part 2
Materi kuliah 19   fungsi part 2Materi kuliah 19   fungsi part 2
Materi kuliah 19 fungsi part 2
 

En vedette

En vedette (12)

Open GL 09 scan conversion
Open GL 09 scan conversionOpen GL 09 scan conversion
Open GL 09 scan conversion
 
Open GL T0074 56 sm1
Open GL T0074 56 sm1Open GL T0074 56 sm1
Open GL T0074 56 sm1
 
Pertemuan 1
Pertemuan 1Pertemuan 1
Pertemuan 1
 
Pertemuan10 spywareadwaredanspam
Pertemuan10 spywareadwaredanspamPertemuan10 spywareadwaredanspam
Pertemuan10 spywareadwaredanspam
 
7. pemrograman struktur
7. pemrograman struktur7. pemrograman struktur
7. pemrograman struktur
 
Tarby magazine salafiyah kajen
Tarby magazine  salafiyah kajenTarby magazine  salafiyah kajen
Tarby magazine salafiyah kajen
 
Pcd 11
Pcd 11Pcd 11
Pcd 11
 
Pcd 10
Pcd 10Pcd 10
Pcd 10
 
Pcd 4
Pcd 4Pcd 4
Pcd 4
 
Matlab
MatlabMatlab
Matlab
 
Techarea company profile
Techarea company profileTecharea company profile
Techarea company profile
 
Pengolahan Citra 2 - Pembentukan Citra Digital
Pengolahan Citra 2 - Pembentukan Citra DigitalPengolahan Citra 2 - Pembentukan Citra Digital
Pengolahan Citra 2 - Pembentukan Citra Digital
 

Similaire à 6. pemrograman pointer

Materi kuliah 03 pointer part 1
Materi kuliah 03   pointer part 1Materi kuliah 03   pointer part 1
Materi kuliah 03 pointer part 1kua
 
PPT-UEU-Bahasa-Pemrograman-Pertemuan-9.pptx
PPT-UEU-Bahasa-Pemrograman-Pertemuan-9.pptxPPT-UEU-Bahasa-Pemrograman-Pertemuan-9.pptx
PPT-UEU-Bahasa-Pemrograman-Pertemuan-9.pptxhudriyah1
 
Materi kuliah 21 pointer part 1
Materi kuliah 21   pointer part 1Materi kuliah 21   pointer part 1
Materi kuliah 21 pointer part 1kua
 
Materi kuliah 21 pointer part 1
Materi kuliah 21   pointer part 1Materi kuliah 21   pointer part 1
Materi kuliah 21 pointer part 1Budi Yono
 
Materi kuliah 21 pointer part 1
Materi kuliah 21   pointer part 1Materi kuliah 21   pointer part 1
Materi kuliah 21 pointer part 1Budi Yono
 
MAKALAH POINTER (DIKI CANDRA) (1).docx
MAKALAH POINTER (DIKI CANDRA) (1).docxMAKALAH POINTER (DIKI CANDRA) (1).docx
MAKALAH POINTER (DIKI CANDRA) (1).docxDikicandra6
 
MAKALAH DATA STRUKTURE (Diki Candra).docx
MAKALAH DATA STRUKTURE (Diki Candra).docxMAKALAH DATA STRUKTURE (Diki Candra).docx
MAKALAH DATA STRUKTURE (Diki Candra).docxDikicandra6
 
Pertemuan 8.ppt
Pertemuan 8.pptPertemuan 8.ppt
Pertemuan 8.pptfauziahUG
 
Materi kuliah 23 pointer part 3
Materi kuliah 23   pointer part 3Materi kuliah 23   pointer part 3
Materi kuliah 23 pointer part 3kua
 
3. Pointer dan List Berkait Singly
3. Pointer dan List Berkait Singly3. Pointer dan List Berkait Singly
3. Pointer dan List Berkait SinglyKelinci Coklat
 
Algoritma&Pemrograman C++ Pertemuan 11
Algoritma&Pemrograman C++ Pertemuan 11Algoritma&Pemrograman C++ Pertemuan 11
Algoritma&Pemrograman C++ Pertemuan 11Menny SN
 
Materi kuliah 23 pointer part 3
Materi kuliah 23   pointer part 3Materi kuliah 23   pointer part 3
Materi kuliah 23 pointer part 3Budi Yono
 
Materi kuliah 23 pointer part 3
Materi kuliah 23   pointer part 3Materi kuliah 23   pointer part 3
Materi kuliah 23 pointer part 3Budi Yono
 

Similaire à 6. pemrograman pointer (20)

Pertemuan5.ppt
Pertemuan5.pptPertemuan5.ppt
Pertemuan5.ppt
 
Materi kuliah 03 pointer part 1
Materi kuliah 03   pointer part 1Materi kuliah 03   pointer part 1
Materi kuliah 03 pointer part 1
 
Pointer
PointerPointer
Pointer
 
PPT-UEU-Bahasa-Pemrograman-Pertemuan-9.pptx
PPT-UEU-Bahasa-Pemrograman-Pertemuan-9.pptxPPT-UEU-Bahasa-Pemrograman-Pertemuan-9.pptx
PPT-UEU-Bahasa-Pemrograman-Pertemuan-9.pptx
 
Materi kuliah 21 pointer part 1
Materi kuliah 21   pointer part 1Materi kuliah 21   pointer part 1
Materi kuliah 21 pointer part 1
 
Materi kuliah 21 pointer part 1
Materi kuliah 21   pointer part 1Materi kuliah 21   pointer part 1
Materi kuliah 21 pointer part 1
 
Materi kuliah 21 pointer part 1
Materi kuliah 21   pointer part 1Materi kuliah 21   pointer part 1
Materi kuliah 21 pointer part 1
 
Pertemuan6.ppt
Pertemuan6.pptPertemuan6.ppt
Pertemuan6.ppt
 
MAKALAH POINTER (DIKI CANDRA) (1).docx
MAKALAH POINTER (DIKI CANDRA) (1).docxMAKALAH POINTER (DIKI CANDRA) (1).docx
MAKALAH POINTER (DIKI CANDRA) (1).docx
 
MAKALAH DATA STRUKTURE (Diki Candra).docx
MAKALAH DATA STRUKTURE (Diki Candra).docxMAKALAH DATA STRUKTURE (Diki Candra).docx
MAKALAH DATA STRUKTURE (Diki Candra).docx
 
Pointer
PointerPointer
Pointer
 
Pertemuan 8.ppt
Pertemuan 8.pptPertemuan 8.ppt
Pertemuan 8.ppt
 
7 Pointer
7 Pointer7 Pointer
7 Pointer
 
207-P02.pdf
207-P02.pdf207-P02.pdf
207-P02.pdf
 
Materi kuliah 23 pointer part 3
Materi kuliah 23   pointer part 3Materi kuliah 23   pointer part 3
Materi kuliah 23 pointer part 3
 
Bab 2-intro-python
Bab 2-intro-pythonBab 2-intro-python
Bab 2-intro-python
 
3. Pointer dan List Berkait Singly
3. Pointer dan List Berkait Singly3. Pointer dan List Berkait Singly
3. Pointer dan List Berkait Singly
 
Algoritma&Pemrograman C++ Pertemuan 11
Algoritma&Pemrograman C++ Pertemuan 11Algoritma&Pemrograman C++ Pertemuan 11
Algoritma&Pemrograman C++ Pertemuan 11
 
Materi kuliah 23 pointer part 3
Materi kuliah 23   pointer part 3Materi kuliah 23   pointer part 3
Materi kuliah 23 pointer part 3
 
Materi kuliah 23 pointer part 3
Materi kuliah 23   pointer part 3Materi kuliah 23   pointer part 3
Materi kuliah 23 pointer part 3
 

Plus de Roziq Bahtiar

static and dynamic routing
static and dynamic routingstatic and dynamic routing
static and dynamic routingRoziq Bahtiar
 
Perintah perintah dasar linux Operating Sistem
Perintah perintah dasar linux Operating SistemPerintah perintah dasar linux Operating Sistem
Perintah perintah dasar linux Operating SistemRoziq Bahtiar
 
Pengantar algoritma pemrograman
Pengantar algoritma pemrogramanPengantar algoritma pemrograman
Pengantar algoritma pemrogramanRoziq Bahtiar
 
Flowchart progrm linear bilangan bulat
Flowchart progrm linear bilangan bulatFlowchart progrm linear bilangan bulat
Flowchart progrm linear bilangan bulatRoziq Bahtiar
 
5. pemrograman array dan_string
5. pemrograman array dan_string5. pemrograman array dan_string
5. pemrograman array dan_stringRoziq Bahtiar
 
4. pemrograman fungsi
4. pemrograman fungsi4. pemrograman fungsi
4. pemrograman fungsiRoziq Bahtiar
 
3. teknik looping dalam_pemrograman
3. teknik looping dalam_pemrograman3. teknik looping dalam_pemrograman
3. teknik looping dalam_pemrogramanRoziq Bahtiar
 
2. teknik pemilihan dalam_pemrograman
2. teknik pemilihan dalam_pemrograman2. teknik pemilihan dalam_pemrograman
2. teknik pemilihan dalam_pemrogramanRoziq Bahtiar
 
1. variable identifier dan_tipe_data
1. variable identifier dan_tipe_data1. variable identifier dan_tipe_data
1. variable identifier dan_tipe_dataRoziq Bahtiar
 
3 piksel_dan_histogram
 3 piksel_dan_histogram 3 piksel_dan_histogram
3 piksel_dan_histogramRoziq Bahtiar
 
Open GL T0074 56 sm3
Open GL T0074 56 sm3Open GL T0074 56 sm3
Open GL T0074 56 sm3Roziq Bahtiar
 
Open GL T0074 56 sm2
Open GL T0074 56 sm2Open GL T0074 56 sm2
Open GL T0074 56 sm2Roziq Bahtiar
 
Open GL 04 linealgos
Open GL 04 linealgosOpen GL 04 linealgos
Open GL 04 linealgosRoziq Bahtiar
 
Open GL T0074 56 sm4
Open GL T0074 56 sm4Open GL T0074 56 sm4
Open GL T0074 56 sm4Roziq Bahtiar
 

Plus de Roziq Bahtiar (20)

static and dynamic routing
static and dynamic routingstatic and dynamic routing
static and dynamic routing
 
Perintah perintah dasar linux Operating Sistem
Perintah perintah dasar linux Operating SistemPerintah perintah dasar linux Operating Sistem
Perintah perintah dasar linux Operating Sistem
 
Pengantar algoritma pemrograman
Pengantar algoritma pemrogramanPengantar algoritma pemrograman
Pengantar algoritma pemrograman
 
Flowchart progrm linear bilangan bulat
Flowchart progrm linear bilangan bulatFlowchart progrm linear bilangan bulat
Flowchart progrm linear bilangan bulat
 
5. pemrograman array dan_string
5. pemrograman array dan_string5. pemrograman array dan_string
5. pemrograman array dan_string
 
4. pemrograman fungsi
4. pemrograman fungsi4. pemrograman fungsi
4. pemrograman fungsi
 
3. teknik looping dalam_pemrograman
3. teknik looping dalam_pemrograman3. teknik looping dalam_pemrograman
3. teknik looping dalam_pemrograman
 
2. teknik pemilihan dalam_pemrograman
2. teknik pemilihan dalam_pemrograman2. teknik pemilihan dalam_pemrograman
2. teknik pemilihan dalam_pemrograman
 
1. variable identifier dan_tipe_data
1. variable identifier dan_tipe_data1. variable identifier dan_tipe_data
1. variable identifier dan_tipe_data
 
Alpro tutor
Alpro tutorAlpro tutor
Alpro tutor
 
Pcd 7
Pcd 7Pcd 7
Pcd 7
 
Pcd 5
Pcd 5Pcd 5
Pcd 5
 
Eigen
EigenEigen
Eigen
 
3 piksel_dan_histogram
 3 piksel_dan_histogram 3 piksel_dan_histogram
3 piksel_dan_histogram
 
Pcd 8
Pcd 8Pcd 8
Pcd 8
 
2 pengolahan_citra
 2 pengolahan_citra 2 pengolahan_citra
2 pengolahan_citra
 
Open GL T0074 56 sm3
Open GL T0074 56 sm3Open GL T0074 56 sm3
Open GL T0074 56 sm3
 
Open GL T0074 56 sm2
Open GL T0074 56 sm2Open GL T0074 56 sm2
Open GL T0074 56 sm2
 
Open GL 04 linealgos
Open GL 04 linealgosOpen GL 04 linealgos
Open GL 04 linealgos
 
Open GL T0074 56 sm4
Open GL T0074 56 sm4Open GL T0074 56 sm4
Open GL T0074 56 sm4
 

6. pemrograman pointer

  • 1. BAB VIII PEMROGRAMAN POINTER Pertemuan Minggu XI dan XII Alokasi Waktu : 4 Jam Pertemuan Standar Kompetensi : Mahasiswa dapat membuat program komputer sederhana dengan menggunakan bahasa C Kompetensi Dasar : Memahami program komputer yang menggunakan struktur Pointer Indikator : Mahasiswa dapat memahami struktur program bahasa C yang mengandung Pointer : Mahasiswa dapat membuat program dengan melibatkan Pointer pointer adalah variabel yang menyimpan alamat memori. Alamat ini adalah lokasi obyek lain (biasanya variabel lain) di memori. Misalnya, jika satu variabel berisi alamat dari variabel lain, variabel pertama dikatakan menunjuk ke variable kedua. Analogy konsep pointer adalah ketika kita ingin berkenalan dengan seseoarang akan tetapi kita tidak dapat menyapanya secara langsung maka biasanya kita akan bertanya kepada teman atau sahabatnya yang kebetulan kita kenal. Orang yang kita tanya perihal seseorang yang ingin kita ketahui identitasnya adalah seorang Pointer (Penunjuk). Analogy yang lain ketika kita ingin berkunjung ke suatu alamat akan tetapi kita tidak tahu di daerah mana alamat tersebut berada maka kita akan bertanya kepada orang yang kita anggap tahu tentag alamat tersebut, orang yang memberikan penjelasan tentang perihal alamat yang kita tanyakan itulah yang kita sebuat dengan Pointer. Poiter adalah variabel yang berisi alamat memori variabel lain dan secara tidak langsung menunjuk ke variabel tersebut. Sebagai contoh Andi berteman dengan Budi, lalu anda ingin mengetahui jumlah keluarga Budi untuk keperluan sensus penduduk. Anda tidak mengetahui alamat Budi, tetapi anda mengenal Andi. Untuk mencari jumlah keluarga Budi, maka pertama-tama anda pergi ke rumah Andi, misalnya di rumah No. 8321. Sesampai di Andi, Andi membaritahukan kepada anda bahwa alamat Budi ada pada alamat 9821. Kemudian anda pergi ke rumah Budi lalu mencatat jumlah keluarga yang dimiliki Budi yaitu lima orang (misalkan). Dalam contoh di atas, Andi bertindak sebagai pointer. Andi tidak memberitahukan jumlah keluarga Budi, tetapi Andi memberitahu alamat Budi, di alamat 9821 (alamat Budi) itulah Anda mengetahui jumlah keluarga Budi. Jika alamat dari ditunjukkan dengan simbol & dan isi dari ditunjukkan dengan symbol *, maka hubungan analogi di atas adalah: Jika variabel akan menjadi penunjuk, itu harus dinyatakan sebagai demikian. Sebuah deklarasi pointer terdiri dari jenis dasar, *, dan nama variabel. Bentuk umum untuk mendeklarasikan variabel pointer Tipe *nama_variabel ketika Anda menyatakan pointer brtipe int *, maka compiler mengasumsikan bahwa semua alamat yang akan ditunjuk oleh varibel pointer tersebut menunjuk ke sebuah variable yang betipe integer. 1
  • 2. Contoh 8.1 #include <stdio.h> #include <conio.h> main() { int x = 99; int *p1, *p2; p1 = &x; p2 = p1; /* print the value of x twice */ printf("Values at p1 and p2: %d % dn", *p1, *p2); /* print the address of x twice */ printf("Addresses pointed to by p1 and p2: %p %p", p1, p2); getch(); } Contoh 8.2 #include <stdio.h> #include <conio.h> main() { int U = 3; int v; int *pu; /* pointer t o an integer */ int *pv; /* pointer t o an integer */ pu = &U; /* assign address of U t o pu */ v = *pu; /* assign value of U t o v */ pv = &v; /* assign address of v t o pv */ printf("nu=%d &u=%X pu=%X *pu=%d", U, &U, pu, *pu); printf("nnv=%d &v=%X pv=%x *pv=%d", v, &v, pv, *pv); getch(); } Pada program diatas menyatakan pointer *s digunakan sebagai penunjuk variable kata yang berbentuk array dan bertipe char. Pointer *s ini digunakan sebagai argument fungsi hitung yang akan mengembalikan nilai integer apabila fungsi hitung tersebut dipanggil. Dengan kata lain fungsi hitung akan memberikan nilai berupa angka dari suatu masukan yang diberikan pada variable kata yang berupa sederet char (string). Contoh 8.3 2
  • 3. #include <stdio.h> #include <conio.h> void tukar(int *a, int *b); main() { int x,y; printf("Masukan nilai ke 1: "); scanf("%d",&x); printf("Masukan nilai ke 2: "); scanf("%d",&y); tukar(&x,&y); printf ("Setelah ditukarkan Nilai ke 1 %dn",x); printf ("Setelah ditukarkan Nilai ke 2 %d",y); getch(); } void tukar(int *a, int *b) { int smt; smt = *a; *a = *b; *b = smt; } Contoh 8.4 #include <stdio.h> #include <conio.h> main() { int number = 0; /* A variable of type int initialized to 0 */ int *pointer = NULL; /* A pointer that can point to type int */ number = 10; printf("nnumber's address: %p", &number); /* Output the address */ printf("nnumber's value: %dnn", number); /* Output the value */ pointer = &number; /* Store the address of number in pointer */ printf("pointer's address: %p", &pointer); /* Output the address */ printf("npointer's size: %d bytes", sizeof(pointer)); /* Output the size */ printf("npointer's value: %p", pointer); /* Output the value (an address) */ printf("nvalue pointed to: %dn", *pointer); /* Value at the address */ getch(); } Contoh 8.5 #include <stdio.h> 3
  • 4. #include <conio.h> void funct1 (int U, int v); /* function prototype */ void funct2 (int *pu, int *pv); /* function prototype */ main () { int u = 1; int v = 3; printf ( "n Before calling functl : u=%d v=%d", u, v); funct1 (u, v); printf ( "n After calling functl : u=%d v=%d", u, v); printf ("nn Before calling funct2: u=%d v=%d", u, v) ; funct2(&u, &v); printf ("n After calling funct2: u=%d v=%d", u, v); getch(); } void funct1 (int U, int v) { U = 0; v = 0; printf ( " n Within functl : u=%d v=%d", U, v); return; } void funct2 (int *pu, int *pv) { *pu = 0; *pv = 0; printf ("n Within funct2: *pu=%d *pv=%d", *pu, *pv) ; return; } Pengayaan Latihan 8.1 #include <stdio.h> #include <conio.h> int hitung(char *s); main() { char kata[80]; printf("Masukan Sebuah Kata : n"); scanf("%s",&kata); printf("%d",hitung(kata)); getch(); } int hitung(char *s) 4
  • 5. { int i=0; for (;*s!='0'; *s++) i++; return(i); } Latihan 8.2 #include <conio.h> #include <stdio.h> #include <stdlib.h> #define size 10 void push(int i); int pop(void); int *tos, *p1, stack[size]; main() { int value; p1 = stack; tos = stack; do { printf("Enter value: "); scanf("%d", &value); if(value != 0) push(value); else {printf("value on top is %dn", pop()); printf("Alamat Memori %pn",(p1+1));} } while(value != -1); getch(); } void push(int i) { p1++; if(p1 == (tos+size)) { printf("Stack Overflow.n"); exit(1); } *p1 = i; } int pop(void) { if(p1 == tos) { printf("Stack Underflow. n"); exit(1); } p1--; return *(p1+1); } 5