Pointer dan Array

Definisi Pointer
Pointer adalah variabel yang menyimpan alamat dari variabel lain.
Dua operator dalam pointer yaitu * (operator reference; content of) dan & (operator alamat; address of).

Contoh:
int i, *ptr;
ptr = &i;
misal : *ptr = 5;  //artinya i=5

Pointer to Pointer
Pointer to Pointer adalah variabel yang menyimpan alamat dari suatu pointer.

Contoh:
int i, *ptr, **ptr_ptr;
ptr = &i;
ptr_ptr = &ptr;
misal : *ptr = 5; // artinya i=5 ;
    **ptr_ptr = 9;  // artinya i=9; atau *ptr=9;

Definisi Array
Array adalah variabel untuk menampung sejumlah data bertipe sama. Array merupakan tipe data terstruktur (data structure).

Ciri-Ciri Array:
- Homogen : semua elemen bertipe data sama.
- Random Access : Setiap elemen dapat dipanggil secara acak, tidak harus berurutan.

Penulisan Array
int A[10];
Dari penulisan array di atas, dapat kita lihat bahwa array terdiri dari 4 komponen:
- tipe data (int, dll.)
- identifier atau nama array (A)
- index operator ([ ])
- nilai dimensi dalam operator (10)

Index array dimulai dari nol (0).










Inisiliasi Array
Array dapat diinisialisasi secara eksplisit tanpa pendeklarasian nilai.

Contoh:
int B[ ]={1, 2, -4, 8};





int B[8]={1, 2, -4, 8};




int B[4] = { 1, 2, -4, 8, 9 };  //error
-> karena nilai dimensinya lebih kecil.

Untuk menampilkan array, penulisannya:
printf(“%d”,A[2]) atau
printf(“%d\n”,*(A+2));

Array Satu Dimensi
C Compiler tidak membatasi nilai dalam dimensi yang kita buat.

Contoh Program:
#include<stdio.h>

int SIZE = 5;

void main() {
int i, j;
int n[SIZE] = {15, 9, 1, 7, 5};
for( i=0 ; i<= SIZE ; i++) {
printf("%5d ", n[i]);
for ( j=1; j<=n[i] ; j++) printf("%c","*");
printf("\n"); 
}
}

Array Dua Dimensi
Syntax: type name_array[row][col];
Contoh: int a[3][4];














Contoh Program:
/* Printing out array 2-D */
#include <stdio.h>
void main() {
int two_dim[3][5] = {1, 2, 3, 4, 5,
      10, 20, 30, 40, 50,
      100, 200, 300, 400, 500};
int i, j;
for (i=0; i<3; i++){
for (j=0; j<5; j++) printf("%6d", two_dim[i][j]);
printf("\n");
}
}

//Output:
1 2 3 4 5 
10 20 30 40 50 
100 200 300 400 500 

Array Tiga Dimensi
Syntax: type name_array[row][col][depth];
Contoh Program:
int x[3][2][4] = {{{1,2,3,4}, {5,6,7,8}},
                          {{11,12,13,14}, {15,16,17,18}},
                          {{21,22,23,24}, {25,26,27,28}}
     };   
  void main() {
    int x[4][3][5] = {{{1, 2, 3}, {0, 4, 3, 4}, {1, 2}},
   {{9, 7, 5}, {5, 7, 2}, {9}},        
   {{3, 3, 5}, {2, 8, 9, 9}, {1, 2, 1}},
   {{0}, {1}, {0, 1, 9}}
  };
    printf(“%5d”, x[2][1][3]);

Array of Pointer
Array of Pointer adalah array yang berisi pointer.
Syntax: type *array_name [value_dim];
Contoh Program:
int i;
int *ptr[4]; 
int x=1, y=2,  z=3, w=5;
ptr[0]=&x, ptr[1]=&y; ptr[2]=&z;  ptr[3]=&w;
for(i=0;i<4;i++) printf("%d ",*ptr[i]);
//Output : 1 2 3 5

Array of Character
Array of Character adalah array yang berisi karakter.
Syntax: char array_name[value_dim];
Contoh Program:
char name[40];
char ss[20]={‘B’,’I’,’N’,’U’,’S’}; //20 elements
char ss[ ]= {‘B’,’I’,’N’,’U’,’S’}; // 5 elements

String
String adalah array of character yang diakhiri dengan null character ( ‘\0’ atau dalam ASCII = 0).
Contoh Program:
char name[40] = ”Amir”;  //benar
name = ”Amir”;   // error name is a constant pointer
Name[40]= “Amir”;  //error

Perbedaan Character dan String
Character dalam C diawali dan diakhiri dengan satu buah petik, sedangkan string diawali dan diakhiri dengan dua buah petik.
Manipulasi String
Standar Library Function (header file string.h) menyediakan fungsi untuk memanipulasi string:
- strlen() : menghitung panjang string, kecuali null char.
- strcpy(s1,s2) : mengcopy s2 ke s1.
- strncpy(s1,s2,n) : mengcopy karakter n pertama dari s2 ke s1
- strcat(s1,s2) : menambahkan string s2 diakhir string s1.
- strncat(s1,s2,n) : menambahkan n karakter dari string s2 diakhir string s1.
- strcmp(s1,s2) : membandingkan nilai dari string s1 dan s2, jika sama, akan mengembalikan nilai nol (0).
dll.


Sources:
http://www.javatutorialprograms.com/2015/11/learning-concept-of-arrays-in-java.html
https://ajenkmhy93.wordpress.com/alpro-2/array-2-dimensi/

Comments