POINTERS AND ARRAYS
POINTER
A. Pengertian Pointer
Pointer
adalah sebuah variabel yang berisi alamat lain. Dimaksud untuk menunjukan ke
suatu alamat memori sehingga alamat dari suatu variable dapat diketahui dengan
mudah.
Bentuk umum dari
pernyataan variable pointer dalam C++ yaitu:
<type>
*ptr_name;
Keterangan:
·
Type adalah tipe dasar pointer
·
Pointer name adalah nama
variable pointer
·
* adalah variable pada
alamatnya yang ditentukan oleh operand.
Contoh:
int i, *ptr;
ptr = &i;
Untuk membuat nilai baru
ke variable yang ditunjuk oleh pointer:
*ptr = 5; / * artinya i = 5 */
B. Fungsi Pointer
Adalah untuk menyimpan alamat memori dari sebuah variable dan alamat
dari sebuah fungsi. Pointer dapat meningkatkan kinerja untuk operasi yang
dilakukan secara berulang.
C. Operator Pointer
Ada 2 operator pointer
yang dikenal secara luas:
1.
Operator Dereference (&)
Biasa disebut “address
of” atau operator alamat. Variable akan menampilkan alamat lokasi memori.
2.
Operator Reference (*)
Biasa disebut “value
pointed by”. Bedanya dengan operator (&), operator ini akan menampilkan
nilai yang terdapat dalam suatu alamat memori, bukan menampilkan alamat
memorinya.
D. Konsep Pointer


POINTER
KE POINTER (multiple indirection)
Adalah
suatu variable pointer yang menunjuk ke pointer lain yang telah menunjuk ke
alamat tertentu.
Syntax:
<type>
**ptr_ptr ;
Contoh:
int i, *ptr, **ptr_ptr;
ptr = &i;
ptr_ptr = &ptr;
Untuk membuat nilai baru untuk i :
*ptr = 5 ; // artinya i = 5;
**ptr_ptr = 9 ; //
artinya i = 9; atau *ptr = 9;
ARRAY
A. Pengertian Array
Array adalah sebah variable yang menyimpan lebih dari 1 buah data
yang memiliki tipe data yang sama. Atau kumpulan dari data data tunggal yang
dijadikan dalam 1 variabel array yang alamat memorinya berbeda yang selanjutnya
disebut elemen2 array yang bisa kita akses berdasarkan indeks.
B. Karakteristik Array
1.
Mempunyai batasan dari
pemesanan alokasi memori (bersifat statis)
2.
Mempunyai tipe data sama
(homogen)
3.
Dapat diakses secara acak
4.
Berurutan (terstruktur).
C. Dimensi Array
1.
Array Dimensi satu (Vektor):
karena hanya memiliki satu arah.
Syntax:
type_array_value
[value_dim];
Contoh:
int A[10];
Keterangan:
·
Int adalah tipe elemen array
·
A adalah nama variable array
·
10 adalah ukuran (menyatakan
jumlah maksimal elemen arraynya)
Ilustrasi:
Elemen array
yang diindeks mulai dari 0

INISIALISASI
ARRAY 1 DIMENSI
Inisialisasi dapat silakukan bersama dengan
deklarasi atau tersendiri.
§ Contoh:
int B[ ]={1, 2, -4,
8};
Array B mempunyai 4 elemen

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

§ Contoh:
int B[4] = { 1, 2, -4, 8, 9 }; // hasilnya error error;
nilai dimensi kecil.
§ Contoh inisialisasi array setelah definisi:
int A[5];
(for i=0; i<5;i++) A[i]=0;
B[5]={0,0,0,0,0};
AKSES ARRAY
·
Dua cara analog dalam mengakses suatu elemen i = 2;
*(A+2)
or A[2]
(A
setara dengan &A[0] atau pointer konstan ke elemen pertama dari array
tertentu)
·
Untuk menunjukan A[2] di monitor screen:
printf(“%d”,A[2]) or
printf(“%d\n”,*(A+2));
MENENTAPKAN NILAI SUATU ELEMEN
Contoh
: A[6] = 15; A[3] = 27;

Pernyataan A[2] = A[3] – A[6], hasilnya:

VARIABEL POINTER
Variabel
pointer adalah pointer yang dapat ditugaskan dengan nilai baru pada saat
run-time.
POINTER KONSTAN
Pointer
konstan adalah pointer yang tidak dapat ditugaskan dengan nilai baru pada saat
run-time.
ARRAY ADALAH POINTER KONSTAN ke elemen pertama dari
array. Array dapat diisi dengan variabel pointer.
§ Contoh :
–
int x=10, y=20;
–
int *ptr; //ptr adalah variable pointer
–
ptr = &x;
–
ptr = &y;
§
Contoh :
–
int x=10, y=20;
–
int B[4]; // B adalah
Array à pointer constant
–
int *ptr; // ptr adalah
variable pointer
–
ptr = &x; // ok
–
ptr = B; // ok
–
ptr++; // ok
–
B = ptr; // error
–
B++; // error
–
B = &y; // error
(Ptr = B; analog dari
ptr = &B[0]; B adalah pointer konstan menunjuk ke elemen pertama dari
array).
Pointer
konstan hanya bisa di inisialisasikan at definition time.
Contoh :
int Arr1[10];
Arr1[10] = {1, 2, 3, 4, 5}; // error
Arr1 = {1, 2, 3, 4, 5}; // error
Arr1[10] = 12; // error max 9
Arr1[0] = 23; // ok
int Arr2[10] = {1, 2, 3, 4, 5};
//ok
MENGAKSES ARRAY MENGGUNAKAN POINTER
int arr[10];
int *ptr_arr;
ptr_arr = arr; //or ptr_arr = &arr[0];
UNTUK MENGAKSES ELEMEN TERTENTU DAPAT
DILAKUKAN MENGGUNAKAN
ptr_arr[i];
arr[i];
*(ptr_arr + i);
*(arr + i);
ptr_arr = ptr_arr + i; *ptr_arr;
CONTOH ARRAY: PROGRAM
![Text Box: #include <stdio.h>
void main()
{
int i;
int list_int[10];
for (i=0; i<10; i++){
list_int[i] = i + 1;
printf( "list_int[%d] init with %d.\n", i, list_int[i]);
}
}](file:///C:/Users/ALDANDI/AppData/Local/Packages/oice_16_974fa576_32c1d314_333e/AC/Temp/msohtmlclip1/01/clip_image014.png)
ARRAY 1
DIMENSI
C compiler tidak membatasi jumlah dimensi
yang dapat dibuat.
Contoh:
![Text Box: #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");
}
}](file:///C:/Users/ALDANDI/AppData/Local/Packages/oice_16_974fa576_32c1d314_333e/AC/Temp/msohtmlclip1/01/clip_image015.png)
2.
Array dimensi dua
Syntax:
type name_array[row][col];
Contoh:
Int a[3][4];

INISIALISASI:
Menggunakan
rmo (row major order):

Contoh
Array 2D:
![Text Box: /* 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");
}
}](file:///C:/Users/ALDANDI/AppData/Local/Packages/oice_16_974fa576_32c1d314_333e/AC/Temp/msohtmlclip1/01/clip_image020.png)
Output:
1 2 3 4 5
10 20 30 40 50
100 200 300 400 500
3.
Array Dimensi Tiga
Syntax:
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 yang diisi dengan 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]);
Output : 1 2 3 5
ARRAY OF
CHARACTER
Array yang diisi dengan karakter
Syntax:
char
array_name[value_dim];
Contoh:
char name[40];
char
ss[20]={‘B’,’I’,’N’,’U’,’S’}; //20 elements
char ss[ ]=
{‘B’,’I’,’N’,’U’,’S’}; // 5 elements
STRING
Array dari karakter yang diakhiri dengan null character (‘\0’ atau dalam ASCII = 0)
String Konstan atau String Literal adalah beberapa karakter
yang ditulis diantara double quote
Contoh : “Welcome to Binus”
Tipe string konstan adalah pointer konstan, dengan demikian dapat
ditulis ke array karakter:
Contoh :
char name[40] = ”Amir”;
//ok
name = ”Amir”; // error name is a
constant pointer
Name[40]= “Amir”; //error
STRING
A string konstan bisa dihubungkan pada waktu kompilasi:
”Hello,” ” world”
Serupa dengan:
”Hello, world”
Contoh inisialisasi string:
char s[ ] = ”BiNus”;
Serupa dengan:
char s[ ] =
{’B’,’i’,’N’,’u’,’s’,’\0’};
String sebagai sebuah
data tidak dikenal dengan C.
CHAR VS STRING
Karakter
C ditulis diantara single quote. Setiap
satu pemakaian byte of computer memory
char ch=65; //Ascii
char ch=0x41; //Ascii
String
diantara Double quote:

STRING MANIPULASI
Dalam Standard Library Fuction (String.h) menyediakan fungsi untuk
memanipulasi string:
·
Streln()
Mengembalikan
nilai panjang string; kecuali null character
·
Strcpy
(s1,s2)
Copy
s2 ke s1
·
Strncpy(s1,s2,n)
Copy
karakter n pertama dari s2 ke s1
·
Strncat
(s1,s2)
Menambahkan
string s2 ke ujung string s1
·
Strncat
(s1,s2,n)
Menambahkan
karakter n dari string s2 ke ujung string s1
·
Strcmp
(s1,s2)
Membandingkan
nilai string s1 dan s2, jika pengembalian serupa 0.
·
Dll.
Comments
Post a Comment