Penunjuk lwn Tatasusunan
Penunjuk ialah jenis data yang memegang rujukan kepada lokasi memori (iaitu pembolehubah penuding menyimpan alamat lokasi memori di mana beberapa data disimpan). Tatasusunan ialah struktur data yang paling biasa digunakan untuk menyimpan koleksi elemen. Kebanyakan bahasa pengaturcaraan menyediakan kaedah untuk mengisytiharkan tatasusunan dan mengakses elemen dalam tatasusunan dengan mudah.
Apakah itu Penunjuk?
Penunjuk ialah jenis data yang menyimpan alamat lokasi memori di mana beberapa data disimpan. Dalam erti kata lain, penunjuk memegang rujukan kepada lokasi memori. Mengakses data yang disimpan dalam lokasi memori yang dirujuk oleh penuding dipanggil dereferencing. Apabila melakukan operasi berulang seperti melintasi pokok/rentetan, carian jadual, dsb., menggunakan penunjuk akan meningkatkan prestasi. Ini kerana penyahrujukan dan penyalinan penunjuk adalah lebih murah daripada sebenarnya menyalin dan mengakses data yang ditunjukkan oleh penunjuk. Penunjuk nol ialah penunjuk yang tidak menunjuk kepada apa-apa. Di Java, mengakses penuding nol akan menghasilkan pengecualian yang dipanggil NullPointerException.
Apakah itu Array?
Ditunjukkan dalam rajah 1, ialah sekeping kod yang biasanya digunakan untuk mengisytiharkan dan memberikan nilai kepada tatasusunan. Rajah 2 menggambarkan rupa tatasusunan dalam ingatan.
nilai int[5]; nilai[0]=100; nilai[1]=101; nilai[2]=102; nilai[3]=103; nilai[4]=104; |
Rajah 1: Kod untuk mengisytiharkan dan memberikan nilai kepada tatasusunan
100 | 101 | 102 | 103 | 104 |
Indeks: 0 | 1 | 2 | 3 | 4 |
Rajah 2: Tatasusunan disimpan dalam memori
Kod di atas mentakrifkan tatasusunan yang boleh menyimpan 5 integer dan ia diakses menggunakan indeks 0 hingga 4. Satu sifat penting tatasusunan ialah, keseluruhan tatasusunan diperuntukkan sebagai satu blok memori dan setiap elemen mendapatnya ruang sendiri dalam tatasusunan. Sebaik sahaja tatasusunan ditakrifkan, saiznya ditetapkan. Jadi jika anda tidak pasti tentang saiz tatasusunan pada masa penyusunan, anda perlu menentukan tatasusunan yang cukup besar untuk berada di bahagian yang selamat. Tetapi, kebanyakan masa, kita sebenarnya akan menggunakan bilangan elemen yang kurang daripada yang telah kita peruntukkan. Jadi sejumlah besar ingatan sebenarnya terbuang. Sebaliknya jika "tatasusunan yang cukup besar" sebenarnya tidak cukup besar, program itu akan ranap.
Apakah perbezaan antara Penunjuk dan Tatasusunan?
Penunjuk ialah jenis data yang menyimpan alamat lokasi memori di mana beberapa data disimpan, manakala Tatasusunan ialah struktur data yang paling biasa digunakan untuk menyimpan koleksi elemen. Dalam bahasa pengaturcaraan C, pengindeksan tatasusunan dilakukan menggunakan aritmetik penunjuk (iaitu unsur ke-i tatasusunan x akan bersamaan dengan (x+i)). Oleh itu dalam C, set penunjuk yang menunjuk kepada satu set lokasi memori yang berturutan, boleh dianggap sebagai tatasusunan. Selanjutnya, terdapat perbezaan dalam cara operator saiz beroperasi pada penunjuk dan tatasusunan. Apabila digunakan pada tatasusunan, operator saiz akan mengembalikan keseluruhan saiz tatasusunan, manakala apabila digunakan pada penuding, ia akan mengembalikan saiz penuding sahaja.