Dalam bahasa C, Pointer bisa berfungsi sebagai variabel array
misal pa = &c[0]
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.
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);
}
#include
#include
#include
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
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
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:
Posting Komentar