1 PENGERTIAN POINTER by 3AZfFUiE

VIEWS: 390 PAGES: 5

									                                       POINTER

1 PENGERTIAN POINTER
       Pointer (variabel penunjuk) adalah suatu variabel yang berisi alamat memori dari
suatu
variabel lain. Alamat ini merupakan lokasi dari obyek lain (biasanya variabel lain) di
dalam
memori. Contoh, jika sebuah variabel berisi alamat dari variabel lain, variabel pertama
dikatakan menunjuk ke variabel kedua
Operator Pointer ada dua, yaitu :
     Operator &
            Operator & bersifat unary (hanya memerlukan satu operand saja).
            Operator & menghasilkan alamat dari operandnya.
     Operator *
            Operator * bersifat unary (hanya memerlukan satu operand saja).
            Operator * menghasilkan nilai yang berada pada sebuah alamat.

2 DEKLARASI POINTER
        Seperti halnya variabel yang lain, variabel pointer juga harus dideklarasikan
terlebih dahulu sebelum digunakan.
Bentuk Umum :
                Tipe_data *nama_pointer;

//Contoh9_1
     int *px;
     char *sh;
     Contoh Program :
     #include “IOSTREAM.h”
     #include “conio.h”
     void main()
     { int x, y; /* x dan y bertipe int */
     int *px; /* px pointer yang menunjuk objek */
     clrscr();
     x = 87;
     px = &x; /* px berisi alamat dari x */
     y = *px; /* y berisi nilai yang ditunjuk px */
     cout<<“Alamat x =”<<&x <<\n”;
     cout<<“Isi px = \n”, px);
     cout<<“Isi x = \n”, x);
     cout<<“Nilai yang ditunjuk oleh px = \n”, *px);
     cout<<“Nilai y = \n”, y);
     getch();
     }

3 OPERASI POINTER
 Operasi Penugasan
   Suatu variable pointer seperti halnya variable yang lain, juga bisa mengalami operasi
penugasan. Nilai dari suatu variable pointer dapat disalin ke variable pointer yang lain.
//Contoh9_2
     #include "iostream.h"
     #include "conio.h"
     void main()
     { float *x1,y, *x2;
     clrscr();
     y = 13.45;
     x1 = &y;             /* Alamat dari          y disalin ke variabel x1 */
     x2 = x1;            /* Isi variabel          x1 disalin ke variabel x2 */
     cout<<"Nilai variabel y = "<<y<< "           ada di alamat "<< x1<<"\n";
     cout<<"Nilai variabel y = "<<y<< "           ada di alamat "<< x2<<"\n";
       getch();
     }
 Operasi Aritmatika
    Suatu variabel pointer hanya dapat dilakukan operasi aritmatika dengan nilai integer
saja. Operasi yang biasa dilakukan adalah operasi penambahan dan pengurangan.
Operasi penambahan dengan suatu nilai menunjukkan lokasi data berikutnya (index
selanjutnya) dalam memori. Begitu juga operasi pengurangan.
//Contoh9_3
     #include <iostream.h>
     #include <conio.h>
     void main()
     { int nilai[3], *penunjuk;
     clrscr();
     nilai[0] = 125;
     nilai[1] = 345;
     nilai[2] = 750;
     penunjuk = &nilai[0];
     cout<<"Nilai "<<*penunjuk <<" ada di alamat memori "
     <<penunjuk<<"\n";
     cout<<"Nilai "<<*(penunjuk+1) <<" ada di alamat memori "
     <<penunjuk+1<<"\n";
     cout<<"Nilai "<<*(penunjuk+2) <<" ada di alamat memori "
     <<penunjuk+2<<"\n";
     getch();
     }

 Operasi Logika
    Suatu pointer juga dapat dikenai operasi logika.
//Contoh9_4
     #include<iostream.h>
     #include "conio.h"
     void main()
     { int a = 100, b = 200, *pa, *pb;
     clrscr();
     pa = &a;
     pb = &b;
     cout<<"nilai pa= "<<pa<< " nilai pb= "<<pb<<"\n";
     if(pa < pb)
     cout<<"pa menunjuk ke memori lebih rendah dari pb\n";
     if(pa == pb)
     cout<<"pa menunjuk ke memori yang sama dengan pb\n";
     if(pa > pb)
     cout<<"pa menunjuk ke memori lebih tinggi dari pb\n";
     getch();}
4 POINTER DAN STRING

//Contoh9_5
     #include <iostream.h>
     #include <conio.h>
     void misteri1(char *);
     void main() {
     char string[] = "amikom";
     cout<< "String sebelum proses adalah " << string <<"\n" ;
     misteri1(string);
     cout<<"String setelah proses adalah "<<string;
     getch();
     }
     void misteri1(char *s) {
     while ( *s != '\0' ) {
     if ( *s >= 'a' && *s <= 'z' )
     *s -= 32;
     ++s;
     }
     }
5 POINTER MENUNJUK SUATU ARRAY
//Contoh9_6
     #include "iostream.h"
     #include "conio.h"
     void main()
     { static int tgl_lahir[] = { 13,9,1982 };
     int *ptgl;
     ptgl = tgl_lahir; /* ptgl berisi alamat array */
     cout<<"Diakses dengan pointer\n";
     cout<<"Tanggal = "<< *ptgl<<"\n";
     cout<<"Bulan = "<< *(ptgl + 1) <<"\n";
     cout<<"Tahun = "<<*(ptgl + 2) <<"\n";
     cout<<"\nDiakses dengan array biasa\n";
     cout<<"Tanggal = "<< tgl_lahir[0] <<"\n";
     cout<<"Bulan = "<< tgl_lahir[1] <<"\n";
     cout<<"Tahun = "<< tgl_lahir[2] <<"\n";
     getch();
     }

MEMBERI NILAI ARRAY DENGAN POINTER
//contoh9_7
#include "iostream.h"
#include "conio.h"
void main()
{ int x[5], *p, k;
clrscr();
p = x;
x[0] = 5;
x[1] = x[0];
x[2] = *p + 2;
x[3] = *(p+1) - 3;
x[4] = *(x + 2);
for(k=0; k<5; k++)
cout<<"x["<<k<<"] = "<< x[k]<<"\n";
getch();
}

Tugas:
1. Buatlah Program untuk menggambarkan konsep Pointer: menampilkan alamat pointe
   dan isi pointer, dengan ketentuan sbb,
   Variabel bilangan bulat bil= 20;
   dan variabel pointer bulat *pnt.
2. Buatlah program untuk menampilkan isi dan alamat pointer larik (array)
   int * bilangan[]={5,7,8,3};
   MEMORI DINAMIS
   Pada contoh program di samping kiri sejumlah memori secara ekplisit disisihkan untuk
   menampung array titik yang mempunyai 10 elemen. Sebenamya alokasi memori ini,
   hanya yang dibutuhkan saja, dapat dilakukan secara dinamis yaitu dilakukan pada saat
   run-time, Untuk melakukan hal ini kita perlu array yang elemen elemennya adalah
   pointer ke suatu struktur seperti dijelaskan pada program di samping kanan.
           Alokasi memori secara dinamis dilakukan dengan operator new dan dealokasi
   dilakukan dengan operator delete. Keduanya merupakan operator baru pada C++.


#include <iostream.h>                          #include <iostream.h>

struct ttk                                        struct ttk
{                                                 {
int x;                                            int x;
int y;                                            int y;
};                                                };
main()                                            main()
{                                                 {
int i;                                            int i;
struct ttk titik[10];                             struct ttk *titik[10];

for (i=0; i < 10; ++i)                            for(i=0;i<10;++i)
{                                                 {
titik[i].x = i ;                                  titik[i] = new ttk;
titik[i].y=i;}                                    titik[i]->x=i;
for(i=0;i< 10;++i)                                titik[i]->y = i;
{cout << titik[i].x << ", " <<                    }
titik[i].y << "\n";                               for (i=0;i< 10;++i)
}                                                 {
return 0;}                                        cout << titik[i]->x <<         ", "     <<
                                                  titik[i]->y << "\n";
                                                                 }
                                                  for(i=0;i< 10;++i)
                                                  {
                                                  // free(titik[i]);
                                                  delete titik[i];
                                                  }
                                                  return 0;
                                                  }

								
To top