Wednesday, October 24, 2018

Pointer dan Array


POINTER

Pointer merupakan sebuah variabel yang digunakan untuk menyimpan data alamat suatu variabel lain
Cara penulisan deklarasinya seperti ini :
 <var_name> *ptr_name;

Dalam pointer kita memakai 2 operator berikut :
 & : untuk menampilkan alamat dari variabel
  * : untuk menampilkan konten dari variabel
contoh:
int a=1;
int *ptr=&a;
ptr sama dengan alamat si a;
*ptr sama dengan isi si a =1.

POINTER TO POINTER
Pointer to pointer adalah variabel pointer yang gunanya untuk menyimpan alamat dari pointer lain dengan menambahakan bintang ke variabel tersebut misal :*ptr,**ptr_ptr,***ptr_ptr_ptr

Penentuan jumlah '*' sesuai kebutuhan.
Jika pointer ptr_ptr menunjuk pointer ptr saja maka jumlah '*' untuk pointer A = 2
Jika pointer ptr_ptr_ptr menunjuk pointer ptr_ptr yang menunjuk pointer ptr maka jumlah '*' untuk pointer A = 3

Contoh penggunaannya :
int nilai=5;
int *ptr;
int **ptr_ptr;
int ***ptr_ptr2;
ptr_ptr2 itu berisi alamat ptr_ptr
*ptr_ptr2 itu berisi alamat ptr
**ptr_ptr2 itu berisi alamt nilai
***ptr_ptr2 itu berisi nilai=5

ARRAY
Array merupakan kumpulan data berurutan yang bertipe sama
Cara penulisannya seperti ini :
      <var_type>array_name[index];

indx adalah tempat kita ingin berapa macam data sesuai var_type.
Jika ingin menyediakan slot untuk 10 integer maka,
contoh penulisannya seperti ini :
      int a [10];
maka didalam int a dapat diisi 10 variabel int yang dimulai dalri index 0 sampai 9

untuk pengisian nilai dalam array tinggal dilakukan seperti ini:
contohnya kita ingin meletakkan angka 1 pada slot pertama yaitu index 0
maka penulisannya seperti berikut:
     a [0] = 1;
maka pada index ke 0 pada array a berisi angka 1

jika ingin memanggil slot 1 pada array maka tinggal dilakukan seperti berikut:
     printf ("%d", a [0] );
kita perlu mengisi kurung siku dengan index slot yang ingin kita panggil
kurung siku tersebut disebut juga dengan tempat mengisi dimensional value
terkecuali string atau array of char yang bisa tidak membutuhkan kurung siku.

Dalam array terdapat juga pointer .Namun pointer di array bersifat tetap atau constant sehingga kita hanya bisa memanggil alamat pada array tersebut dan tidak bisa mengubahnya

kita dapat juga menginisialisasi array langsung dengan isi-isinya seperti berikut:
kita dapat menginisialisasi tanpa mengisi index value yang akan otomatis menghitung jumlah index kita:
     int arr [ ] = {1,2,3,4,5};
kita juga dapat menginisialisasi dengan index value:
     int arr [6] = {1,2,3,4,5};
perlu diketahui jika kita menginialisasi isi array yang lebih dikit dari index value kita akan menyebabkan run time error,tetapi kadang-kadang tidak sehingga disarankan untuk untuk tidak dilakukan.
ARRAY 2 DIMENSI
syntaxnya sebagai berikut:
      <var_type> array_name [row][col];
contoh penulisannya seperti ini :
      int a [4][4];
jumlah barisnya 4 dan jumlah kolomnya 4
jadi kalau digambarkan  akan seperti ini:

          col 1   col 2   col 3   col 4
row 1  |__|     |__|     |__|     |__|
row 2  |__|     |__|     |__|     |__|
row 3  |__|     |__|     |__|     |__|
row 4  |__|     |__|     |__|     |__|

ketika kita ingin memanggil nilai yang ada pada kolom tertentudan baris tertetu maka tinggal menulis seperti ini:
      printf ("%d", a [baris][colom]);

untuk inisialisasi array 2 dimensi dapat ditulis sebagai berikut:
int a [2][2] = { 1,2,3,4 };
maka akan berisi dari row 0 dan col 0 sampe ke row 0 col 1dan dilanjutkan ke row 1 col 0 sampe ke row 1 col 1
ataupun kalo ingin rapi seperti ini,
int array_name [2][2] = { (1,2), (3,4) };

Selain itu ada juga array 3 dimensi, seperti 2 dimensi hanya saja ada dimensi tambahan yaitu kedalamannya
contoh:
      int arr[2][2][2];
maka deklarasinya akan terlihat seperti ini:
      int arr[2][2][2] = {(1,2),(3,4),(5,6),(7,8)};


ada library yang menyediakan function untuk memanipulasi string atau array of character dan ini tidak berlaku pada int maupun char.
nama headernya : string.h
beberapa nama fungsinya sebagai berikut :
- strlen()               : return nilai yang isinya panjang string
- strcpy (s1,s2)     : menyalin s2 ke s1
- strcpy (s1,s2,n)  : menyalin n karakter dari pertama dari s2 ke s1
- strcat (s1,s2)      : menambahkan s2 ke akhir dari s1
- strcat (s1,s2,n)   : menambahkan n karakter s2 ke akhir dari s1
- strcmp (s1,s2)    : mengcompare nilai dari string 1 dan string 2, jika sama maka return 0

No comments:

Post a Comment