POINTER
Pointer merupakan variabel yang digunakan untuk menyimpan data alamat suatu variabel lain
Cara penulisan deklarasinya seperti ini :
<var_name> *ptr_name;
Contoh penulisan deklarasinya seperti ini :
int *ptr_name;
char *ptr_name;
dll...
Pointer biasa memakai 2 operator berikut :
- & : untuk menampilkan alamat dari variabel
- * : untuk menampilkan konten dari variabel
Cara pemakaiannya seperti ini :
int nilai; //mendeklarasikan variabel nilai
int *ptr; //mendeklarasikan variabel pointer
ptr = &nilai; // 1
*ptr = 10; // 2
printf("%d", *ptr); // 3
1 = pointer ptr menunjuk ke variabel nilai melalui alamat variabel nilai
2 = variabel nilai yang sudah ditunjuk melalui pointer ptr dimasukkan angka 10
3 = ketika print *ptr, maka ditampilkan konten dari pointer ptr yaitu variabel nilai yang isinya 10.
POINTER TO POINTER
Pointer to pointer adalah variabel pointer yang gunanya untuk menyimpan alamat dari pointer lain
Contoh penulisan deklarasinya seperti ini :
int **ptr_name;
char ***ptr_name;
Penentuan jumlah '*' sesuai kebutuhan.
Jika pointer A menunjuk pointer B saja maka jumlah '*' untuk pointer A = 2
Jika pointer A menunjuk pointer B yang menunjuk pointer C maka jumlah '*' untuk pointer A = 3
Contoh penggunaannya :
int nilai;
int *ptr1;
int **ptr2;
int ***ptr3;
ptr1 = &nilai; // 1
ptr2 = &ptr1; // 2
ptr3 = &ptr2; // 3
***ptr3 = 21; // 4
printf("%d %d %d %d", nilai, *ptr1, **ptr2, ***ptr3); // 5
1 = pointer ptr1 menunjuk ke variabel nilai melalui alamat variabel nilai
2 = pointer ptr2 menunjuk ke pointer ptr1 melalui alamat ptr1
3 = pointer ptr3 menunjuk ke pointer ptr2 melalui alamat ptr2
4 = variabel nilai yang sudah ditunjuk melalui pointer ptr1 yang sudah ditunjuk melalui pointer ptr2 yang sudah ditunjuk melalui pointer ptr3 dimasukkan angka 21
5 = ketika print, maka ditampilkan konten dari semua pointer ptr yang isinya semua 21.
ptr1, ptr2, ptr3 bisa mengasilkan output yang sama-sama 21 karena ketiganya saling terhubung
ARRAY
Array merupakan kumpulan data berurutan yang bertipe sama
Cara penulisannya seperti ini :
<var_type>array_name[value_dim];
value_dim artinya value dimension, anggapannya merupakan jumlah slot yang disediakan oleh suatu array
Jika ingin menyediakan slot untuk 10 integer maka,
contoh penulisannya seperti ini :
int array_name [10];
Jadinya array_name akan terlihat seperti ini :
|_| |_| |_| |_| |_| |_| |_| |_| |_| |_|
0 1 2 3 4 5 6 7 8 9
slot-slot pada array tersebut dapat disebut juga dengan elemen
angka 0-9 merupakan index elemen dalam suatu array
index ini dapat diibaratkan sebagai nomor tiap slot dalam array
penomoran selalu mulai dari 0
untuk pengisian nilai dalam array tinggal dilakukan seperti ini:
contohnya kita ingin meletakkan angka 5 pada slot pertama
slot pertama mempunyai index 0
maka penulisannya seperti berikut:
array_name [0] = 5;
dengan begitu array_name akan terlihat seperti ini:
|5| |_| |_| |_| |_| |_| |_| |_| |_| |_|
0 1 2 3 4 5 6 7 8 9
jika ingin memanggil slot 1 pada array maka tinggal dilakukan seperti berikut:
printf ("%d", array_name [0] );
kita tinggal perlu mengisi kurung siku dengan index slot yang ingin kita panggil
kurung siku tersebut disebut juga dengan tempat mengisi dimensional value
selain itu, untuk memanggil array dapat menggunakan pointer
array dapat dianalogikan pointer konstan yang mununjuk pada elemen array pertama
maka *array_name = &array_name [0]
jika dipanggil maka akan keluar konten elemen pertama array
misalnya kita ingin memanggil array pada elemen ketiga yaitu index 2
kita hanya perlu menambah dengan 2 seperti berikut:
printf ("%d",*(array_name+2));
hasilnya akan sama saja ketika kita memanggil dengan format berikut
printf ("%d", array_name[2]);
kita dapat menginisialisasi array langsung dengan isi-isinya seperti berikut:
kita dapat menginisialisasi tanpa mengisi dimensional value:
int arr [ ] = {1,2,3,4,5};
kita juga dapat menginisialisasi dengan dimensional value:
int arr [6] = {1,2,3,4,5};
hati-hati, jika kita mengisi dimensional value lebih kecil dari jumlah elemen yang ingin kita masukkan angka seperti:
int arr [1] = {1,2,3,4,5,6,7,8,9,10};
dapat menyebabkan run-time error
untuk beberapa kasus, program masih tetap bisa berjalan tapi tetap saja bukanlah hal baik.
selain itu, ketika mengisi dimensional value, selalu biasakan tambahkan 1.
karena dalam array, ketika kita mengisi 5 angka, jumlah elemen dalam array tidaklah 5 melainkan 6 karena setiap akhir elemen dari array selalu ada 'end of string' arau '\0'.
maka ketika anda ingin mengisi 5 angka dalam array maka ubahlah dimensional valuenya menjadi 6
pointer ada dua macam
- pointer variabel : pointer yang bisa diisi dengan nilai baru
- pointer konstan : pointer yang tidak bisa diisi dengan nilai baru
array seperti yang sudah disebutkan sebelumnya merupakan pointer konstan
ketika pointer variabel diisi dengan alamat variabel A kemudian diganti dengan alamat variabel B masih bisa
tapi ketika pointer konstan, ambil saja contohnya array, ketika diisi dengan variabel baru misalnya A maka akan error
yang dijelaskan diatas merupakan array 1 dimensi, bagaimana dengan 2 dimensi?
ARRAY 2 DIMENSI
syntaxnya sebagai berikut:
<var_type> array_name [row][col];
contoh penulisannya seperti ini :
int array_name [4][4];
jumlah barisnya 4 dan jumlah kolomnya 4
jadi kelihatannya akan seperti ini:
col 1 col 2 col 3 col 4
row 1 |__| |__| |__| |__|
row 2 |__| |__| |__| |__|
row 3 |__| |__| |__| |__|
row 4 |__| |__| |__| |__|
ketika kita ingin memanggil nilai yang ada pada kolom pertama dan baris kedua maka tinggal menulis seperti ini:
printf ("%d", array_name [2][1]);
untuk inisialisasi array 2 dimensi dapat ditulis sebagai berikut:
int array_name [2][2] = { 1,2,3,4 };
ataupun seperti ini,
int array_name [2][2] = { (1,2), (3,4) };
hasilnya nanti sama saja yaitu,
baris 1 kolom 1 = 1
baris 1 kolom 2 = 2
baris 2 kolom 1 = 3
baris 2 kolom 2 = 4
Selain itu ada juga array 3 dimensi, seperti 2 dimensi hanya saja ada dimensi tambahan yaitu kedalamannya
jadi ketika array 2 dimensi seperti ini:
int arr[2][2] = {1,2,3,4};
maka ketika ditambahkan dimensi ketiga yaitu kedalamannya seperti ini
int arr[2][2][2];
maka deklarasinya akan terlihat seperti ini:
int arr[2][2][2] = {(1,2),(3,4),(5,6),(7,8)};
array juga dapat diisi dengan pointer
jadi syntaxnya akan seperti ini:
<var_type> *array_ptr [value_dim];
array juga dapat diisi oleh character
biasa digunakan sebagai string
contohnya seperti berikut :
char arr [6] = {'H','E','L','L','O'};
printf ("%s", arr); //output : HELLO
char arr2 [50];
scanf ("%s", arr2); //input : HAISEMUAPENGUNJUNG
printf ("%s", arr2); //output : HAISEMUAPENGUNJUNG
ada library yang menyediakan function untuk memanipulasi string
nama headernya : string.h
beberapa nama fungsinya sebagai berikut :
- strlen() : return nilai yang isinya panjang string
- strcpy (s1,s2) : menyalin s2 ke s1
- strcpy (s1,s2,n) : menyalin n karakter pertama dari s2 ke s1
- strcat (s1,s2) : menambahkan s2 ke akhir dari s1
- strcat (s1,s2,n) : menambahkan n karakter s2 ke akhir dari s1
- strcmp (s1,s2) : mengompare nilai dari string 1 dan string 2, jika sama maka return 0
Tidak ada komentar:
Posting Komentar