Pointer
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?
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??