Anda di halaman 1dari 13

Algoritma dan Struktur Data

Pointer

Christine Dewi, S.Kom

Pointer (variabel penunjuk)


Pointer (variabel penunjuk) adalah suatu variabel
yang berisi alamat memori dari suatu variabel lain.
Pointer merupakan variabel level rendah yang dapat
digunakan untuk menunjuk nilai integer, character,
float, double, atau single, dan bahkan tipe-tipe data
lain yang didukung oleh bahasa C.

Kegunaan Pointer
Mengapa harus menggunakan POINTER dalam bahasa C?
Agar dapat meningkatkan kinerja untuk operasi yang
dilakukan secara berulang variabel pointer bersifat
dinamis (dapat diubah-ubah lokasi penyimpannya
dalam memory).
Pada variabel biasa kita tidak perlu tahu alamat memory
dari variabel tersebut. Untuk mengakses hanya perlu
nama variabel tersebut. Tapi untuk struktur data
dinamis (linked list, tree dsb) hal tersebut tidak bisa.

Deklarasi Pointer
Bentuk Umum: tipe_data *nama_pointer;
Contoh:
int *nilai;
char *huruf;
Pendeklarasian variabel pointer menggunakan tanda *
sebelum nama variabelnya.
Sedangkan untuk menampilkan nilai yang ditunjuk oleh
suatu variabel pointer, juga digunakan operator *
Untuk menampilkan alamat tempat penyimpanan nilai
yang ditunjuk oleh suatu variabel pointer, digunakan
operator &

Contoh 1
#include <stdio.h>
void main()
{
int i, j;
int *p; /* pointer ke integer */
p = &i;
*p=5;
j=i;
printf("i= %d, j= %d, *p= %d\n", i , j, *p);
printf("&i= %d, &j= %d, &p= %d\n", &i , &j, &p);
}

Output?

Contoh 1
#include <stdio.h>
void main()
{ int i, j;
int *p; /* pointer ke integer */
p = &i;
printf("p= %d\n", p); //berisi alamat dari i
*p=5;
j=i;
printf("i= %d, j= %d, *p= %d\n", i , j, *p);
printf("&i= %d, &j= %d, &p= %d\n", &i , &j, &p);
}

Output?

Pointer sebagai parameter


#include <stdio.h>
void swap(int i, int j)
{
t=5
int t;
i=10
t = i;
J=5
i = j;
j = t;
printf("a= %d, b= %d\n", i, j);
}
void main()
{
int a,b;
a = 5;
b = 10;
printf("a= %d, b= %d\n", a, b);
swap(a, b);
}

Contoh 3
#include <stdio.h>
void swap(int *i, int *j)
{
int t;
t = *i;
*i = *j;
*j = t;
}
void main()
{
int a,b;
a = 5;
b = 10;
printf("a= %d, b= %d\n", a, b);
swap(&a,&b);
printf("a= %d, b= %d\n", a, b);
}

Contoh 3
#include <stdio.h>
void swap(int *i, int *j)
{
int t;
t = *i;
*i = *j;
*j = t;
printf(" a= %d, b= %d\n", *i, *j);
printf("&a= %d, &b= %d\n", &i, &j);
}
void main()
{
int a,b;
a = 5;
b = 10;
printf(" a= %d, b= %d\n", a, b);
printf("&a= %d, &b= %d\n", &a, &b);
swap(&a,&b);
}

Contoh 3
#include <stdio.h>
void swap(int *i, int *j)
{
int t;
printf("\n i= %d,j= %d\n", *i, *j);
printf("----------------------------\n");
t = *i;
printf("\n t= %d\n",t);
printf("----------------------------\n");
*i = *j;
printf("\n *i= %d\n",*i);
printf("----------------------------\n");
*j = t;
printf("\n *j= %d\n",*j);
printf("----------------------------\n");
printf("Hasil setelah di tukar :\n");
printf(" a= %d, b= %d\n", *i, *j);
}

void main()
{
int a,b;
a = 5;
b = 10;
printf("a dan b mula-mula \n");
printf("----------------------------\n");
printf("a= %d, b= %d\n", a, b);
printf("&a= %d,&b= %d\n", &a, &b);
printf("----------------------------\n");
printf("panggil fungsi swap(&a,&b)=
swap(%d,%d)\n", &a,&b);
swap(&a,&b);
}

Contoh 4
#include <stdio.h>
int nama_fungsi (int *b) {
*b = *b + 1;
printf ("*b= %d\n",*b);
return *b;
}
void main () {
int x=1;
printf ("x=%d\n",x);
printf ("&x=%d\n",&x);
printf("nama_fungsi(%d)\n",&x);
printf("*b= %d\n", nama_fungsi(&x));
}

Output??

Kuis (Tulis di kertas jangan lupa nama dan NIM:


Waktu 15 Menit)
Perhatikan Kode Program berikut:
#include<stdio.h>
void main()
{
int value1 = 5;
int *mypointer;
mypointer = &value1;
// baris 7
*mypointer = 10;
// baris 8
printf("%d %d\n", value1, *mypointer);
}
Pertanyaan: apa output program di atas dan jelaskan jalannya
kode program di atas!!

Anda mungkin juga menyukai