Week 1 – Array dan Pointer

Pointer dan Array

  1. Pointer

Pointer adalah variabel yang menyimpan alamat dari variabel yang lainnya.

Deklarasi pointernya: <type> *ptr_name;

 

Ex:

Inisialisasi sebuah integer pointer ke data variable:

int i, *ptr;     = deklarasi di awal terlebih dahulu

ptr= &I;       = berarti ptr merupakan alamat dari i dan i-nya mendapatkan nilai dari ptr tersebut.

12

Jika dilihat dari  contoh 1. diatas,  x dan *ptr di deklarasi dahulu lalu si ptr ini merupakan alamat dari x, dan  alamat ptr itu 5000, lalu di lihat  ptr itu di memorinya, mengarah ke address 2345, yg nilai valuenya 75 yg nantinya di isikan ke x(gambar contoh 2.)

  1. Pointer to Pointer

Apa pointer to pointer itu?

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

Deklarasi pointernya: <type> **ptr_ptr ;

 

Ex:

int i, *ptr, **ptr_ptr ;

ptr = &i;

ptr_ptr = &ptr;

 

Untuk merubah isi/nilai variabel i bisa melalui sbb:

*ptr = 5; // sama artinya dgn i=5 ;

**ptr_ptr = 9; //sama artinya dgn i=9; atau *ptr=9;

3

Sama seperti pembahasan sebelumnya, hanya saja disini ada variabel lain yg menyimpan alamat dari pointer lainnya.

  1. Operasi pada Pointer

Operasi pada pointer ada dua yaitu :

Manipulasi Pointer, “alamat dari” &  Manipulasi Pointer, “isi dari”

  1. Manipulasi Pointer, “alamat dari”

45

Di lihat dari contoh di atas, pertama semua di inisialisasi terlebih dahulu, dan bulat = 10 dan pecah = 20.0. itu berarti, pi merupakan alamat dari bulat yg berisikan 10 dan pf merupakan alamat dari pecah yang berisikan 20.0

  1. Manipulasi Pointer, “isi dari”

67

Dari contoh diatas, awal mulanya sama seperti bahasanya di sebelumnya setelah itu di printf dengan outputan 10 20.0 karena %d menunjuk dari *pi (value si pi) dan %1.f menunjuk dari  *pf (value sip f). setelah itu, *pi yg sebelumnya 10, dikalikan 2 yang hasilnya menjadi 20 dan otomatis nilai didalam address pi yaitu alamat dari variable bulat berubah menjadi 20, begitu juga pada *pf yg yang sebelumnya 20.0 ditambah 5 menjadi 25.0 dan otomatis nilai didalam address pf yaitu address variable pecah menjadi 25.0 (gambar ke2. Sisi kanan).

4.Call By Value

8

Pada call by value, yg di pasing ke function adalah value bukan adressnya jadi ketika di int main tidak terganti  hasil di functionnya, hanya di function saja yang terganti. Seperti  contoh diatas, di function itu hasilnya menjadi “Jumlah 1 ditambah 2 = 3”, tetapi di int main hasilnya tidak berubah seperti di function, tetap seperti  yg pertama di inisialisasi menjadi “Jumlah 1 ditambah 2 =0”

  5.Call By Reference

9

Sebaliknya dari call  by value, Pada call by reference ,ia memanggil addressnya dan hasilnya pun berubah di keduanya baik di dalam function maupun dalam int main (lihat contoh diatas).

  1. Array

Apa definisi Array?

Array adalah Data disimpan dalam suatu struktur, sedemikian rupa sehingga elemen-elemen di dalam struktur tadi dapat diolah secara kelompok ataupun secara individu.

Elemen-elemen suatu Array diindeks (subscript) mulai dari 0.

  1. Sifat – sifat Array

>> Homogen

Seluruh elemen di dalam struktur array mempunyai tipe data yang sama.

>>Random Access

Setiap elemen di dalam struktur array dapat dicapai secara individual, langsung ke lokasi elemen yang diinginkan, tidak harus melalui elemen pertama.

  1. Array Dimensi Satu

>> Sintaks deklarasi array dimensi satu seperti dibawah ini:

Type nama_arrray[Nilai_dim];

Contoh : int A[10];

Char B[1000];

>> Definisi dari sebuah array terdiri dari 4 komponen yaitu :

-Type specifier

-Identifier (nama array)

-Operator index ([ ])

-Nilai dimensi dalam operator [ ]

9.Cara Akses Array

 

>> Terdapat Dua cara yang ekuivalen untuk mengakses unsur ke-i dari suatu array. Misal untuk i=2;

*(A+2) atau A[2]

 

>>A ekuivalen/sama dengan &A[0]

>>Jika misal elemen A[2] yg ingin ditampilkan di layar monitor, gunakan statemen sbb:

printf(“%d”,A[2]) atau  printf(“%d\n”,*(A+2));

10. Mengisi Data Array

Contoh : K[2] = 10; K[9] = 20;

1a

11. Inisialisasi Array

Contoh : – int M[]={-1,2,10,9};

Maksudnya adalah Array M memiliki 4 elemen

1b

– int B[5]={ 0,0,0,0};

ERROR karena yang dituju adalah B[5] namun B[5] tidak ada                      isinya atau nol saat diinisialisasi

  • Pointer Constant vs Pointer Variabel

– Pointer Constant : Pointer yang isinya tidak dapat dirubah saat run time

Contoh :  – int B[5];  // B adalah Array dan itu adalah Pointer Constant

– int A[8] = 10;  // ERROR karena max dimensi adalah 7

– ptr = B;  // sama artinya dgn ptr = &B[0]; karena B tipenya pointer constant ke                 elemen pertama dari array

– Pointer Variabel  : Pointer yang isinya dapat dirubah-rubah pada saat run time

Contoh : – int *ptr;  // ptr adalah Pointer Variabel

– ptr = &x; // Pointer Variabel

12. Akses Array

– Dengan Pointer

int A[10];

int *ptr_A;

ptr_A = A  // sama artinya dgn ptr_A = &A[0];

– Untuk mengakses elemen ke-i

ptr_A[i];

A[i];

*(ptr_A + i);

*(A + i);

ptr_A = ptr_A + i; ptr_A;

  • Contoh Array

1

Ketika di compile hasilnya akan seperti ini :

2

13. Array Dimensi Satu

– Bahasa C tidak membantasi jumlah dimensi array namun hal itu dibatasi oleh jumlah

memori komputer yang tersedia.

Contoh :

3

Dan Hasilnya akan seperti ini :

4

14. Array Dimensi Dua

– Inisialisasi menggunakan aturan RMO(Row Major Order)

Contoh : – int a[2][2] = {1,2,3,4};

int a[2][2] = {{1,2},{3,4}}

Hasilnya seperti ini

5

– Contoh Array Dimensi Dua

6

Setelah di compile hasilnya :

7

15. Array Dimensi Tiga

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}}};

16. Array of Pointer

Array of Pointer adalah sebuah array yang berisi pointer.

Syntax: type *nama_array[indeks];

type = tipe data

*nama_array = nama array

[indeks] = nilai dimensi array

1

Menurut kode di atas:

Array of pointer :

  • *ptr[0] diisi alamat variabel a, dimana a=10.
  • *ptr[1] diisi alamat variabel b, dimana b=20.
  • *ptr[2] diisi alamat variabel c, dimana c=30.
  • *ptr[3] diisi alamat variabel d, dimana d=40.
  • *ptr[4] diisi alamat variabel e, dimana e=50.

Sehingga output yang dihasilkan dari perintah printf(“%d “,*ptr[i]); adalah..

2

17. Array of Character

Array of character adalah sebuah array yang berisi tipe data character.

Syntax: char nama_array[indeks];

char = tipe data char

nama_array = nama array of character

[indeks] = nilai dimensi array

Contoh:

char nama[40];

                char inisial[3]={‘U’,’M’,’R’};

                char inisial[3]={‘A’,’T’,’H’};

18. String

String adalah array of character yang diakhiri dengan null character (‘\0’, ASCII=0).

String sendiri bukan merupakan tipe data dalam Bahasa C.

String constant atau string literal adalah string yang diapit tanda petik dua.

Contoh: “Struktur Data”

Saat kompilasi, string constant dapat digabung, seperti:

“IF303 ” “Struktur Data” “- Pak Yonatan”

menjadi:

“IF303 Struktur Data – Pak Yonatan”

Syntax: char nama_string[indeks];

char = tipe data char (string merupakan array of char)

nama_string = nama string

[indeks] = nilai dimensi string

Contoh:

char food[7]= “Pempek”;

                            atau

               char food[7]={‘P’,’e’,’m’,’p’,’e’,’k’,’\0’};

               char kota[10]= “Palembang”;

                            atau

                char kota[10]={‘P’,’a’,’l’,’e’,’m’,’b’,’a’,’n’,’g’,’\0’};

Char diapit oleh tanda kutip satu (‘) dan tiap char menempati 1 byte memori.

Contoh: char ch=’A’;

                char ch=65 // Kode ASCII untuk A adalah 65

String diapit oleh tanda kutip dua (“).

Contoh: char matkul[13] = “Struktur Data”;

19. Manipulasi String

Beberapa fungsi dalam header file string.h

5

3

4

Ditulis oleh:

  • Raisa Kiyasa (14110110031)
  • Indah Noviasari (14110110038)
  • Astrid Tamara (14110110040)

Leave a comment