Wednesday, October 17, 2018

Pointers and Arrays


1. Pointer

  Apa itu Pointers? Pointers adalah sebuah variabel yang menyimpan alamat dari variabel yang lain.

Syntax Pointer:

<type> *ptr_name;


Minimal digunakan dua operator dalam Pointer : *(Pointer) dan &(Alamat)
Contoh:


Inisialisasi sebuah integer dalam bentuk data variabel:
int i, *ptr;
ptr = &i;
Untuk menentukan nilai baru untuk variabel yang ditunjuk Pointer:
*ptr = 5;  /* means i=5 */


Konsep Pointer :





  • Pointer to Pointer. "Pointer to Pointer" merupakan sebuah variabel yang menyimpan alamat sebuah pointer yang lain.
  • Syntax:

<type> **ptr_ptr ;

Contoh :
  int i, *ptr, **ptr_ptr;
  ptr = &i;
  ptr_ptr = &ptr;
  Untuk menentukan nilai baru untuk i:
  *ptr = 5;  // means i=5 ;
  **ptr_ptr = 9;   // means i=9; or *ptr=9;

Pointer to Pointer





2. Array
  • Array adalah sekumpulan data yang disimpan di dalam struktur tertentu untuk diakses sebagai sebuah grup atau individual. Sebagian variabel disimpan dengan nama yang sama dengan cara membedakan index mereka.
  • Karakteristik array ialah
         - Homogenus
            Semua element mempunyai tipe data yang sama.
         - Random Access
            Setiap element dapat digunakan secara individual, tidak harus dalam urutan.




  • Syntax:

type array_value [value_dim];

Example:

int A[10];

Definisi tersebut mengandung 4 komponent:
- Tipe spesific
- Identifier (Nama Array)
- Operator Index([])
- Nilai Dimensi di dalam operator [ ]

Contoh Array 1 Dimensi:

- Element sebuah Array dimulai dari 0.


  • Array dapat diinisialisasikan dengan jelas tanpa nilai dimensi.
Contoh : 

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






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



Accesing Array

Ada 2 cara untuk mengakses sebuah element i=2;
*(A+2) or A[2]

A sebanding dengan &A[0] atau pointer kepada element pertama dari sebuah array

Untuk menunjukkan A[2] di layar:
printf(“%d”,A[2]) or
  printf(“%d\n”,*(A+2));

Assigning Values
Menentukan nilai sebuah element
Contoh :A[6] = 15;  A[3] = 27;

• Pernyataan A[2] = A[3] - A[6], hasilnya:

Pointer Constant dan Pointer Variabel
  • Pointer Constant adalah pointer yang dapat ditugaskan dengan nilai yang baru pada saat dijalankan.
  • Pointer Variabel adalah pointer yang tidak dapat ditugaskan dengan nilai yang baru pada saat dijalankan.

Accesing Array

Mengakses array dengan pointer :
int arr[10];
  int *ptr_arr;

  ptr_arr = arr; //or ptr_arr = &arr[0];

Untuk mengakses element tertentu dapat menggunakan :
ptr_arr[i];
  arr[i];
  *(ptr_arr + i);
  *(arr + i);
  ptr_arr = ptr_arr + i; *ptr_arr; 



One Dimensional Array

C compiler tidak membataskan jumlah dimensi yang dapat dibuat. Memori PC kita yang membatasi.


Two Dimensional Array
Syntax 2D Array:
  type name_array[row][col];
Contoh:
 int a[3][4];




Inisialisasi
dengan rmo (row major order)
Contoh :
:int b[2][2] = {1, 2, 3, 4 };
•int b[2][2] = { { 1, 2 }, { 3, 4 } };
•int b[2][2] = { { 1 }, { 3, 4 } };
•int x[3][4] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12};
•int x[3][4] = { {1, 2, 3, 4},
     {5, 6, 7, 8},
     {9, 10, 11, 12}
   };


Three Dimensional Array
•Syntax 3D Array :
  type name_array[row][col][depth];
• Contoh :
  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
•Sebuah array dengan satu atau lebih pointer
Syntax :
    type *array_name [value_dim];
• Contoh :
  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]);



String

String adalah sebuah kumpulan karakter yang diakhiri dengan null karakter('\0' atau di ASCII=0)
String konstant atau String Literal adalah sejumlah karakter diantara double quote.
- Contoh : "Welcome to Binus"

String konstant dapat dihubungkan pada compile-time:
"Hello" "World"
sama dengan
"Hello, World"

String sebagai tipe data tidak dikenal di C


Manipulasi String
•Di Standard Library Function (header file string.h) menyediakan fungsi untuk memanipulasi string
strlen()
  Menginput panjang string kecuali null char
strcpy(s1,s2)
  Mengcopy string2 ke string1
strncpy(s1,s2,n)
  Mengcopy n kata dari string 2 ke string 1
strcat(s1,s2)
  Menambah string2 diakhir string1
strncat(s1,s2,n)
 Menambah n kata dari string2 diakhir string1
strcmp(s1,s2)
  Membandingkan nilai string1 dan string2, jika sama balik ke 0

–etc.


No comments:

Post a Comment