Pointer vs Array
Pointer adalah tipe data yang menyimpan referensi ke lokasi memori (yaitu variabel pointer menyimpan alamat lokasi memori di mana beberapa data disimpan). Array adalah struktur data yang paling umum digunakan untuk menyimpan kumpulan elemen. Kebanyakan bahasa pemrograman menyediakan metode untuk mendeklarasikan array dengan mudah dan elemen akses dalam array.
Apa itu Pointer?
Penunjuk adalah tipe data yang menyimpan alamat lokasi memori di mana beberapa data disimpan. Dengan kata lain, penunjuk menyimpan referensi ke lokasi memori. Mengakses data yang disimpan di lokasi memori yang direferensikan oleh penunjuk disebut dereferencing. Saat melakukan operasi berulang seperti melintasi pohon / string, pencarian tabel, dll., Menggunakan pointer akan meningkatkan kinerja. Ini karena dereferensi dan menyalin pointer lebih murah daripada sebenarnya menyalin dan mengakses data yang ditunjukkan oleh pointer. Pointer null adalah pointer yang tidak menunjuk ke apapun. Di Java, mengakses pointer null akan menghasilkan pengecualian yang disebut NullPointerException.
Apa itu Array?
Ditunjukkan pada gambar 1, adalah potongan kode yang biasanya digunakan untuk mendeklarasikan dan menetapkan nilai ke array. Gambar 2 menggambarkan bagaimana sebuah array akan terlihat dalam memori.
nilai [0] = 100; nilai [1] = 101; nilai [2] = 102; nilai [3] = 103; nilai [4] = 104; |
Gambar 1: Kode untuk mendeklarasikan dan menetapkan nilai ke array
100 | 101 | 102 | 103 | 104 |
Indeks: 0 | 1 | 2 | 3 | 4 |
Gambar 2: Array disimpan dalam memori
Kode di atas mendefinisikan sebuah array yang dapat menyimpan 5 bilangan bulat dan mereka diakses menggunakan indeks 0 sampai 4. Salah satu properti penting dari sebuah array adalah, seluruh array dialokasikan sebagai satu blok memori dan setiap elemen mendapatkan ruangnya sendiri dalam array. Setelah array ditentukan, ukurannya ditetapkan. Jadi, jika Anda tidak yakin tentang ukuran larik pada waktu kompilasi, Anda harus menentukan larik yang cukup besar agar berada di sisi yang aman. Namun, seringkali, kita sebenarnya akan menggunakan lebih sedikit jumlah elemen daripada yang telah kita alokasikan. Jadi, sejumlah besar memori sebenarnya terbuang. Di sisi lain jika "array yang cukup besar" sebenarnya tidak cukup besar, program akan macet.
Apa perbedaan antara Pointer dan Array?
Penunjuk adalah tipe data yang menyimpan alamat dari lokasi memori di mana beberapa data disimpan, sedangkan Array adalah struktur data yang paling umum digunakan untuk menyimpan kumpulan elemen. Dalam bahasa pemrograman C, pengindeksan array dilakukan dengan menggunakan aritmatika pointer (yaitu elemen ke-i dari array x akan setara dengan * (x + i)). Oleh karena itu di C, sekumpulan pointer yang menunjuk ke satu set lokasi memori yang berurutan, dapat dianggap sebagai larik. Lebih lanjut, ada perbedaan dalam bagaimana ukuran operator beroperasi pada pointer dan array. Ketika diterapkan ke sebuah array, operator sizeof akan mengembalikan seluruh ukuran dari array, sedangkan ketika diterapkan ke sebuah pointer, itu hanya akan mengembalikan ukuran dari pointer tersebut.