Pointer dan Array
- 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.
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.)
- 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;
Sama seperti pembahasan sebelumnya, hanya saja disini ada variabel lain yg menyimpan alamat dari pointer lainnya.
- Operasi pada Pointer
Operasi pada pointer ada dua yaitu :
Manipulasi Pointer, “alamat dari” & Manipulasi Pointer, “isi dari”
- Manipulasi Pointer, “alamat dari”
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
- Manipulasi Pointer, “isi dari”
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
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
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).
- 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.
- 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.
- 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;
11. Inisialisasi Array
Contoh : – int M[]={-1,2,10,9};
Maksudnya adalah Array M memiliki 4 elemen
– 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
Ketika di compile hasilnya akan seperti ini :
13. Array Dimensi Satu
– Bahasa C tidak membantasi jumlah dimensi array namun hal itu dibatasi oleh jumlah
memori komputer yang tersedia.
Contoh :
Dan Hasilnya akan seperti ini :
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
– Contoh Array Dimensi Dua
Setelah di compile hasilnya :
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
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..

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
Ditulis oleh:
- Raisa Kiyasa (14110110031)
- Indah Noviasari (14110110038)
- Astrid Tamara (14110110040)





















