Kamis, 29 Oktober 2009

Pointer Dalam Bahasa C++


Dalam bahasa C, Pointer bisa berfungsi sebagai variabel array
misal pa = &c[0]
berarti pointer pa menunjuk elemen array ke-0 dalam variabel C


Kalau mendeklarasikan pointer kedalam array, tidak boleh menggunakan tanda bintang

jadi : pa = &c[1];

TUJUAN PENGGUNAAN POINTER DALAM BAHASA C :

1. Mengirimkan “Parameter yang berupa variabel” ke dalam fungsi, artinya nilai
variabel bisa diubah di dalam fungsi

int nama fungsi (int *b) {
*b = *b + 1;
}
main () {
int x=1;
nama_fungsi (&x);
printf (“%d”, x); // output :2, karena x diubah di dalam fungsi menjadi x=x+1;
}



DALAM BAHASA PASCAL :
Procedure nama_proc (var b:integer);
begin
B=b+1;
end;
var x;
begin
x=1;
nama_proc (x);
writeln (x); // output : 2
end.

2. Untuk membuat variabel DINAMIS (Bukan variabel Statis)

Contoh variabel STATIS dalam bahasa C :

#include
main () {
int a[2], i;
for (1=0; i<2; i++) {
scanf (“%d”, &a[i]);
}

printf (“Anda mengetikkan :”);
for )i=0; i<2; i++) {
printf (“\n%d”, a[i]);
}
}

Contoh variabel DINAMIS dalam bahasa C :


Program dibuat lebih fleksibel, artinya… apabila kita belum mengetahui berapa banyak jumlah data yg akan diinput oleh operator, maka kita akan membuat program sedemikian rupa sehingga program menjadi fleksibel terhadap data yg akan diinput oleh operator.






Pointer Sebagai Variable Dinamis.


1.============================================================*

#include
#include
#include
#include /* dibutuhkan untuk fungsi alokasi memori */

void main(){
int num, index, *p;
randomize();
do {
printf(“Berapakah jumlah data yang akan dimasukkan ? “);
scanf(“%d”,&num);
if (num==0) break;

/*****
Mengalokasikan array secara dinamis
sebanyak #num# elemen
*****/
p = (int *) malloc (sizeof(int) * num);

for (index=0; index
/*****
Mengisi alamat memori yang ditunjuk ptemp
dengan bilangan acak
*****/
p[index] = random(1000)+1;
}
for (index=0; index
printf(“Nilai ke-%d: %d\n”, index+1, p[index]);
}
//printf(“Sisa memori heap sesudah alokasi array: %u”,
//coreleft());
/*****
Membebaskan kembali memori yang
sudah dialokasikan
*****/
free(p);
printf(“\n”);
} while (num>0);
}

2.============================================================*

#include
#include
#include
#include /* dibutuhkan untuk fungsi alokasi memori */

void main(){
int *p;
float *q;
p = (int *) malloc (sizeof(int) *2); //array dinamis 2 elemen
p[0]= 200;
p[1]=500;
printf(“%d %d”, p[0], p[1]);
free(p);
p = (int *) malloc (sizeof(int) *20);
p[19]= 10000;
printf(“\n%d”, p[19]);
free(p);
q = (float *) malloc (sizeof(float) *2);

q[0]= 100.25;
q[0]= 200.75;
printf(“\n%.2f %.2f”, q[0], q[1]);
free(q);

}


Kegunaan Pointer


#include
main() {

int a, b;
int *pa, *pb;
pa= &a; // pa diisi dengan alamat variabel a
pb= &b; // pa diisi dengn alamat variabel b
a= 10;
//b= 2000;

printf(“%d\n”, *pa); //menampilkan isi dari alamt yg ditunjuk oleh pa
printf(“%d\n”, *pb); //menampilkan isi dari alamt yg ditunjuk oleh pb

pa= pb;

printf(“%d\n”, *pa); // output: 2000

*pa = 500; // mengisi alamat yg ditunjuk pb dengan 500
// dengan kata lin, mengisi b dengan 500
// karena pb menunjuk alamat dari b

printf(“%d\n”, a); //output: 10
printf(“%d\n”, b); // output: 1, karena pa juga menunjuk alamat dari b

b= 250;
printf(“%d\n”, *pa); //output: 250

pb= &a;
printf(“%d\n”, *pb); //output: 10

printf(“\n\n\n”);

int c[4]= {10,20,30,40};
printf(“%d\n”, c[1]);

pa = &c[0];
printf(“%d\n”, *pa);
printf(“%d\n”, pa[1]);

pa= &c[2];
printf(“%d\n”, pa[1]);

pa= &c[1];
printf(“%d\n”, pa[1]);

pb =c; // c adalah pointer yng menunjuk &c[0]
printf(“%d\n”, *pb);
printf(“%d\n”, pb[1]);

// variabel array yg dideklarasikan berfungsi sama
// persis dengan pointer, bedanya c tidak bis diisi dengan alamat yang lain
// c= &ca ->> error

printf(“\n\n\n”);
printf(“%d\n”, *(c+1));
printf(“%d\n”, *(pb+2)); //output: pb[2] -> 30

pa = &c[2];
printf(“%d\n”, *(pa-2)); //output: 10
printf(“%d\n”, *(–pa)); //output: 20
printf(“%d\n”, *(–pa)); //output: 30

/************************************************************************************************
=>Tujuan Penggunaan Pointer Dalam Bahasa C:


< 1 >. Mengirimkan “parameter yang berupa variabel” ke dalam fungsi, artinya nilai variabel
bisa diubah di dalam fungsi

int nama_fungsi (int *b){
*b = *b + 1;
}
main() {
int x=1;
nama_fungsi(&x);
printf(“%d”, x); //output: 2, karena x di ubah di dalam fungsi menjadi x= x+1

< 2 >. Untuk membuat variabel DINAMIS (Bukan variabel Statis)

***********************************************************************************************/
}


Tidak ada komentar: