Wednesday, October 17, 2018

POINTER DAN ARRAY

1. Pointer
      Pointer adalah suatu variabel yang digunakan untuk menyimpan nilai dari suatu variabel lain atau variabel yang digunakan untuk menginisialisasikan suatu nilai untuk dimasukkan kedalam suatu variabel tertentu.
      Pointer umumnya terbagi menjadi 2 macam yaitu : * (nilai dari), dan &(alamat dari). contoh :

int i, *ptr;
ptr = &i;

dalam penggalan inisialisasi diatas, kita telah menghubungkan nilai dari pada integer i dan integer * ptr. jadi apabila kita memberikan nilai kepada i, maka integer *ptr akan memiliki nilai yang sama dengan integer i. apabila kita memberi nilai i=5, maka *ptr juga akan bernilai 5.

definisi pointer : sederhananya, suatu integer yang kita beri * didepannya lalu memberi nilai dengan &(integer) akan memiliki nilai dari address dari integer tersebut. apabila kita melakukan printf pada ptr pada penggalan codingan diats, maka system akan menghasilkan output berupa alamat yang dipakai integer i untuk menyimpan nilainya.

dalam pointer *, juga ad yg namanya double pointer, triple pointer dan seterusnya. double pointer hanya dapat mengacu pada single pointer, double pointer tidak dapat mengacu pada nilai suatu integer langsung dan begitu seterusnya.

2. Array
       Singkatnya, array adalah kumpulan dari suatu jenis variabel, dapat berupa kumpulan char yang kemudian disebut "string" atau kumpulan dari integer-integer. bentuk umum array :

(jenis variabel) (nama variabel)[panjang array]
Ex : int A[10];

mudahnya, kita telah memesan tempat sebanyak 10 buah didalam memory RAM kita dengan address yang "RANDOM". didalam array terdapat yang namanya index dan elemen.

       Index adalah angka yang merujuk ke nilai kesekian dari suatu array dan elemen adalah jumlah dari index keseluruhan. Contoh :

int A[5] = {1,2,3,4,5}

       Didalam array, penghitungan index dimulai dari angka 0 hingga angka n-1, jadi dalam kasus diatas, index A[0]=1, A[1]=2, A[2]=3, A[3]=4, A[4]=5. kita hanya dapat menggunakan index dari suatu array dari 0 samapai n-1 karena pada dasarnya apabila kita memesan suatu array dengan panjang tertentu, index terakhirnya akan berisi '\0' yang berarti NULL atau kosong. sehingga penghitungan index dimulai dari angka 0 hingga n-1

       Untuk menginisialisasi nilai dari index-index sebuah array dapat dilakukan seperti dibawah ini :

int A[5] = {0,1,2,3,4}, dan bukan
int A[5];
A[5] = {0,1,2,3,4}

inisialisasi kedua akan menghasilkan error karena apabila kita menuliskan A[5] = {0,1,2,3,4} berarti kita ingin memberikan nilai 0,1,2,3,dan 4 kedalam 1 index array[5] dan hal tersebut tidak dapat dilakukan, karena nilai dari A[5] hanya dapat diisi oleh 1 integer atau 1 char saja, tidak lebih. di codingan diatas kita berusaha memberikan 5 nilai sekaligus kedalam array A index ke-5 yang membuatnya menjadi error. Nilai index-index yang tidak diinisialisasikan nilainya akan berupa 0.
       
          Untuk mengakses array dapat dilakukan dengan 2 cara, contohnya :

int A[3] = {1,2,3}
//Cara 1 : printf("%d", A[1]);   //output = 2
//Cara 2 : printf("%d", *(A+1)) //output = 2

cara ke 2 dapat dilakukan karena nilai *(A) mengarah kepada nilai dari index array A index ke 0, sehingga ditambahkan dengan angka 1 yang berarti nilai dari array A index ke-1.

ARRAY 2 DIMENSI
        Sama dengan array 1 dimensi, hanya bedanya, Array 2 dimensi menggunakan beberapa baris dan beberapa kolom, untuk inisialisasi dapat dilakukan seperti contoh :

int A[(jumlah baris)][(jumlah kolom)]
Ex : int A[3][3]

bayangkan saja bentuk matriks, kita telah memesan tempat berukuran 3 x 3 dimemori RAM kita.


pemanggilan nilai dari index arraay 2 dimensi sama saja dengan array 1 dimensi, namun bedanya ada tambahan jumlah baris dan jumlah kolom dalam pemanggilannya

int A[1][2] = {{1,2,3},{1,2,3}}
printf("%d", A[1][1]) //output = 2

Begitulah mengenai array, dan pointer. Semoga bermanfaat

No comments:

Post a Comment