Halo, dan selamat datang kembali.
Dalam kuliah ini, saya ingin berbicara tentang hubungan antara pointer dan array.
Ada hubungan yang kuat, dan kita perlu memahami hubungan ini sebelum kita benar-benar
dapat berbicara tentang aritmatika pointer. Jadi mari kita mulai.
Array adalah kumpulan objek dengan tipe yang sama
yang dapat Anda rujuk menggunakan satu nama. Kami tahu bahwa kami cukup baik dalam array sekarang.
Kami telah menggunakan array karakter untuk beberapa bagian sekarang.
Ini adalah array yang dapat Anda akses dengan menggunakan indeks atau
subskrip di dalam tanda kurung tersebut. Kami ingat itu.
Kita tahu bahwa array berbasis nol, mereka mulai dari nol.
Tapi sekali lagi, itu hanya cara untuk menahan beberapa bulan dengan nama variabel yang sama.
Pointer adalah variabel yang memiliki nilainya, alamat memori sebagai nilainya,
dan dapat
mereferensikan variabel atau konstanta lain dari tipe tertentu.
Kita juga harus pada titik ini cukup jelas tentang apa itu pointer.
Itu hanya menyimpan alamat memori.
Anda dapat menggunakan pointer untuk menyimpan alamat variabel yang berbeda pada waktu yang berbeda.
Tetapi Anda harus memiliki tipe yang sama. Pointer int harus
menunjuk untuk mengembalikan alamat tipe int.
Array dan pointer tampak sangat berbeda,
tetapi keduanya sangat erat hubungannya dan terkadang dapat digunakan secara bergantian,
terutama dengan array karakter.
Anda benar-benar dapat membuat karakter ingat yang merupakan string
dan Anda dapat membuat pointer karakter yang pada dasarnya adalah hal yang sama.
Hanya ada sedikit perbedaan
apakah Anda mengalokasikan memori dan membebaskannya dengan penunjuk karakter.
Dengan array karakter, Anda tidak perlu
melakukan itu, tetapi karakter a juga berukuran tetap.
Jadi jika Anda membuat string array
karakter dengan ukuran 20, Anda hanya dapat menyimpan 19 karakter.
Dengan penunjuk karakter, Anda dapat menggunakan manajemen memori
dinamis dan Anda dapat menambah atau mengurangi ukuran, itu
bisa lebih efisien mengenai memori.
Tapi salah satu kegunaan paling umum dari pointer di c adalah sebagai pointer ke array.
Ini adalah saat Anda
paling sering menggunakan pointer, terutama untuk karakter.
Pointer karakter sama dengan array karakter.
Alasan utama menggunakan pointer untuk
menghapus adalah alasan kenyamanan notasi dan efisiensi program.
Jadi Anda dapat menggunakan salah satu array atau pointer dalam banyak kasus
kecuali ketika Anda berbicara tentang manajemen memori dinamis.
Tetapi dalam banyak kasus Anda bisa. Dan satu-satunya perbedaan adalah
sintaksnya, notasinya.
Apakah Anda menggunakan subskrip untuk mengakses elemen atau tidak, atau
apakah Anda menggunakan aritmatika titik atau
tidak, apakah Anda menggunakan penunjuk karakter atau tidak untuk menunjuk ke alamat spesifik elemen tersebut.
Ini juga lebih efisien untuk menggunakan pointer karakter juga.
Pointer ke array umumnya menghasilkan kode yang menggunakan lebih sedikit memori dan dieksekusi lebih cepat.
Jadi Anda ingin menggunakan pointer untuk karakter sebanyak mungkin
dan pointer ke tipe data lain juga.
Karena lebih cepat dan penggunaan memori lebih sedikit. Pointer di atas array untuk sebagian besar.
Jika Anda memiliki array 100 bilangan bulat, kami
tahu apa artinya ini, Anda cukup mengatakan nilai int adalah 100. 100 adalah ukuran.
Itu berarti Anda dapat menyimpan 100 bilangan bulat dalam array itu.
Anda juga dapat menentukan pointer. Kami akan menamainya nilai pointer karena
menunjuk ke array nilai
dan dapat digunakan untuk mengakses bilangan bulat yang terkandung dalam array ini.
Jadi kami hanya mengatakan pointer nilai instar. Kita tahu bagaimana mendeklarasikan pointer pada saat ini.
Saat Anda mendefinisikan pointer yang digunakan untuk menunjuk
elemen array, Anda tidak menunjuk pointer sebagai tipe pointer ke array.
Sampai saat ini, yang pernah kita dengar hanyalah pointer ke ujung,
pointer ke double.
Tetapi ketika Anda menggunakan array, Anda tidak mengatakan array runcing.
Pointer aktual itu menunjuk ke elemen tertentu yang terkandung dalam array.
Jadi ingatlah itu. Ini sebenarnya bukan seluruh array
saat Anda menghapus pointer dengan alamat nilai.
Jadi untuk mengatur penunjuk nilai agar menunjuk ke elemen pertama larik nilai, yang harus Anda
lakukan hanyalah mengatakan nilai titik atau sama dengan nilai.
Anda tidak perlu memasukkan alamat di sana atau apa pun. Karena
nilai array adalah pointer.
Itulah yang harus Anda kendarai di kepala Anda adalah semua
array ini adalah petunjuk di bawah tenda.
Jadi jika Anda ingin menetapkan elemen pertama
dari array ke sebuah pointer, yang harus Anda lakukan adalah menentukan array di
sisi kanan operator equals dan
di sisi kiri Anda hanya memiliki pointer nilai.
Ini akan menunjuk ke alamat pertama dalam array atau elemen pertama.
Operator alamat tidak digunakan, perhatikan itu.
Kompilator c memperlakukan tampilan nama array tanpa
subskrip sebagai penunjuk ke array.
Jadi menentukan nilai tanpa subskrip memiliki
efek menghasilkan pointer ke elemen nilai pertama.
Jadi, ini artinya Anda sekarang dapat menunjuk ke nilai-nilai
berikutnya dalam array hanya dengan menaikkan pointer, untuk menuju ke alamat berikutnya.
Dan itulah yang akan kita bicarakan dalam beberapa kuliah berikutnya ketika kita berbicara tentang aritmatika titik.
Dan itu benar-benar hanya masalah notasi dan juga hal efisiensi.
Jadi cara yang setara untuk menghasilkan pointer ke awal nilai adalah
dengan juga menerapkan alamat operator ke elemen pertama kanan.
Jadi Anda bisa melakukannya dengan dua cara, keduanya baik-baik saja.
Tapi Anda juga bisa melakukan ini. Bisa dibilang nilai pointer address dari value sub zero.
Itu akan mengatur penunjuk nilai ke elemen pertama dalam array.
Jadi Anda bisa menggunakan yang ini atau Anda bisa mengatakan nilai poin sama dengan nilai.
Jelas, tanpa ampersand dan tanpa subskrip,
kodenya sedikit lebih sedikit atau lebih mudah untuk ditulis.
Ini mungkin sedikit lebih jelas
karena Anda belum tentu tahu bahwa nilai adalah array kecuali Anda melihat deklarasi.
Tapi sekali lagi, kedua cara itu baik-baik saja. Penunjuk nilai sama dengan nilai atau
penunjuk nilai sama dengan alamat dari nilai di bawah nol.
Ini masalah preferensi programmer. Dan sekali lagi, ini adalah hal notasi.
Jadi hanya
untuk mengulangi, ketika Anda memiliki dua ekspresi
ar sub-i dan asterisk ar plus
i, artinya setara.
Jadi kami hanya ingin memastikan bahwa Anda memahami hal ini.
Keduanya berfungsi jika ar adalah nama array.
Anda dapat menggunakan pointer dan Anda dapat mereferensikannya.
Dan keduanya berfungsi jika itu adalah variabel pointer.
Gunakan ekspresi seperti ar plus plus hanya berfungsi jika ar adalah variabel pointer.
Jadi Anda tidak dapat menambah array dengan
mengatakan plus plus dan mengharapkannya untuk pergi ke elemen berikutnya.
Anda hanya dapat melakukannya pada pointer atau pointer array.
Jadi jika kita memiliki ar yang merupakan pointer yang menunjuk ke array dan kita
ingin pergi ke elemen berikutnya, kita bisa menambahkannya setiap saat.
Tetapi jika Anda mengatakan ar sub-i karena ar sub i adalah array
dan array adalah pointer, Anda dapat melakukan dereferensi dengan mengatakan ar yang ar
adalah pointer yang telah
kami tetapkan ar plus i, itu hal yang sama.
Jadi dalam beberapa kuliah berikutnya, kita akan berbicara tentang
aritmatika titik dan ini sangat berkaitan dengan hubungan antara array dan pointer.
Pointer bisa berupa array. Ini bukan array pointer, ini adalah elemen.
Jadi Anda dapat menggunakan alamat pointer untuk
menavigasi melalui array, beralih
melalui array. Terima kasih.