Halo, dan selamat datang kembali.
Dalam kuliah ini, saya ingin berbicara tentang pengubah const dan
bagaimana kita menggunakannya dengan pointer.
Kami telah belajar tentang kuliah sebelumnya yang konstan.
Itu hanya berarti Anda tidak dapat mengubah nilai variabel. Tapi apa artinya ketika kita menerapkannya pada sebuah pointer?
Jadi ketika kita menggunakan pengubah const dalam variabel atau
array, ia memberitahu compiler bahwa isi dari array variabel tidak akan diubah oleh program.
Alternatifnya adalah membuat pernyataan definisi oleh praprosesor, tetapi const biasanya
lebih efisien cara yang lebih baik untuk melakukannya.
Dengan pointer, kita harus mempertimbangkan dua hal saat menggunakan pengubah const.
Apakah kita benar-benar mengatakan bahwa pointer tidak dapat diubah?
Atau apakah kita mengatakan nilai yang ditunjuk pointer tidak dapat diubah?
Karena ingat pointer berisi nilai alamat.
Dan kami mungkin tidak ingin mengubah alamat itu selamanya.
Atau kita mungkin tidak ingin mengubah nilai yang ditunjuk oleh titik tersebut.
Dalam kedua kasus, kita harus spesifik dalam sintaks kita.
Jadi Anda dapat menggunakan kata kunci const ketika Anda mendeklarasikan pointer untuk menunjukkan bahwa nilai
yang ditunjuk tidak boleh diubah.
Cara Anda memberikan ini dan lagi
sehingga pointer adalah nilai karena nilai memiliki alamat.
Apa yang ditunjukkannya adalah nilai dari alamat itu.
Jika Anda ingin itu tidak berubah, Anda akan
melakukan sesuatu seperti ini.
Anda akan mengatakan ketika Anda mendeklarasikan pointer, Anda akan meletakkan tanda
bintang di pengubah konstan sebelum tipe.
Jadi Anda akan mengatakan konstan apa pun jenis penunjuk Anda adalah penunjuk asterisk.
Jadi ini sebenarnya cacat mendefinisikan pointer
ke konstanta.
Kami tidak akan dapat mengubah 999l.
Jadi kami menyatakan bahwa nilai yang ditunjukkan oleh pvalue konstan.
Kompiler akan memeriksa pernyataan apa pun yang mencoba mengubah nilai yang ditunjukkan oleh pvalue.
Dan jika ada teman yang melakukannya di program, itu akan menimbulkan kesalahan.
Jadi ini sintaksnya. Sekali lagi apa yang ingin
Anda perhatikan di sini adalah const adalah
kata pertama, dan itu sebelum tipenya. Jadi itu mengatakan bahwa nilai yang menunjuk ke
tidak dapat berubah.
Jadi jika Anda mencoba melakukan sesuatu seperti ini pada pvalue, Anda mencoba
menetapkan nilai ke apa yang menunjuk karena Anda melihat
operator tipuan di sana. Itu berarti kita memberikan nilai
pada apa yang kita tunjuk. Jika kita mencoba melakukan
itu, itu akan memberikan kesalahan karena kita tidak dapat
mengubah nilai itu, tidak dapat mengubah 999l menjadi 888l.
Jadi sekarang bagaimana dengan pointer ke konstanta.
Dan pada deklarasi sebelumnya, kita
membuat pointer yang ditunjuk oleh titik tersebut tidak dapat diubah.
Tapi kita masih bisa mengubah nilai sebenarnya dari variabel yang kita deklarasikan.
Jadi kita masih bisa mengubah nilai long.
Kami tidak dapat mengubah nilai p bintang.
Tapi nilai panjang tidak didefinisikan sebagai konstanta itu hanya didefinisikan sebagai nilai panjang.
Jadi kita masih bisa memodifikasi pointer nilai integer
karena tidak memiliki konstanta yang diterapkan.
Kami hanya menerapkan konstan ke pointer. Jadi kita bisa mengatakan nilainya sama dengan 777l.
Nilai yang ditunjuk telah berubah, tetapi Anda tidak menggunakan penunjuk untuk membuat perubahan.
Pointer itu sendiri juga bukan konstanta.
Pointer ingat berisi alamat.
Kami tidak mendeklarasikan pointer sebagai konstanta. Jadi kita masih bisa mengubahnya
Kami yang ditunjuk oleh pointer menjadi konstan. juga. Jika kita mendeklarasikan variabel baru yang disebut angka, kita dapat
mengatakan bahwa nilai-p sama dengan alamat dari angka tersebut.
Itu baik-baik saja karena kita sedang mengubah alamat dari nilai pointer.
Kami tidak mengubah nilai yang ditunjuk oleh pointer.
Jadi pahami perbedaan ini, baik mengubah nilai
pointer, yang hanya
merupakan alamat atau mengubah apa yang ditunjuk pointer.
Jika Anda tidak ingin mengubah apa yang
ditunjuk oleh pointer, const harus menjadi kata kunci pertama dalam deklarasi pointer itu sendiri.
Jadi sekali lagi, dalam contoh ini, kita akan mengubah alamat yang disimpan dalam nilai-p untuk menunjuk ke sebuah angka.
Kami masih tidak dapat menggunakan pointer untuk mengubah nilai yang disimpan karena itu dideklarasikan
karena kami tidak dapat mengubah nilai itu.
Anda dapat mengubah alamat yang disimpan dalam pointer sebanyak yang Anda suka, seperti yang kami lakukan.
Menggunakan penunjuk untuk mengubah nilai yang ditunjuk tidak diperbolehkan
bahkan setelah Anda mengubah alamat yang disimpan dalam penunjuk.
Jadi meskipun kita baru saja mengubahnya
menjadi angka panjang, pointer tetap memiliki konstanta sebagai kata kunci.
Jadi kita tidak bisa mengubah nilai apapun yang ditunjuk pointer.
Bagaimana dengan tidak membiarkan alamat pointer berubah,
nilai yang ada di pointer.
Jadi, Anda juga mungkin ingin memastikan bahwa alamat yang disimpan dalam penunjuk tidak dapat diubah.
Anda dapat melakukan ini dengan menggunakan kata kunci konstan
dalam deklarasi pointer dengan cara yang sama, tetapi sedikit berbeda.
Alih-alih memiliki const sebagai kata kunci pertama,
Anda meletakkannya setelah tipe data dan setelah tanda bintang.
Ini mengatakan bahwa pointer itu sendiri tidak dapat mengubah nilainya.
Jika Anda meletakkannya sebelum int, Anda mengatakan nilai yang ditunjukkan oleh pointer tidak dapat berubah.
Jadi ketika Anda melakukan ini, itu memastikan bahwa penunjuk selalu menunjuk ke hal yang sama.
Alamatnya tidak akan pernah berubah.
Kompilator akan memeriksa bahwa Anda
tidak membalikkan upaya untuk mengubah penunjuk di tempat lain dalam kode Anda.
Anda tidak dapat mengubah alamat ini.
Jadi jika Anda mencoba untuk mengatakan p count sama dan item, Anda akan mendapatkan kesalahan.
Karena itu hanya bisa menunjuk ke alamat hitungan.
Ini semua tentang di mana Anda menempatkan kata kunci konstan jika Anda ingin mengubahnya.
Jika Anda tidak ingin mengizinkan penunjuk ke penunjuk berubah atau
jika Anda tidak mengizinkan alamat penunjuk berubah.
Konstanta sebagai kata kunci pertama tidak mengizinkan nilai ke pointer yang menunjuk untuk diubah.
Jika Anda meletakkan konstanta setelah tipe data di bintang, artinya
alamat penunjuk tidak dapat diubah.
Jadi banyak yang harus diambil dan itu sangat membingungkan, jadi pelajari apa yang baru saja saya katakan.
Pahami sintaks itu, ini sangat penting
dan sangat rumit. Hal ini dapat sangat mudah membuat
kesalahan itu. Jadi pahami perbedaannya.
Anda masih dapat mengubah nilai
yang ditunjukkan p count untuk menggunakan p count, seperti yang kita bisa lakukan pada yang sebelumnya. Karena p count adalah, meskipun kami menetapkan kami tidak
dapat menetapkan alamat baru, kami
masih dapat mengubah nilai yang menunjuk.
Jadi kita bisa menghilangkan referensi dan mengubahnya seperti itu. Kita dapat mengatakan jumlah p bintang sama dengan 345, tidak apa-apa.
Referensi nilai yang disimpan dalam hitungan melalui pointer dan mengubah nilainya menjadi 345.
Anda dapat membuat pointer konstan yang menunjuk ke nilai yang juga merupakan
konstanta, sehingga Anda bisa melakukan sesuatu seperti ini, konstanta di
bintang, konstanta p item.
Dan itu mengatakan bahwa nilai yang ditunjuk adalah
konstan dan pointer itu sendiri adalah konstan.
Jadi p item adalah penunjuk konstan ke konstanta sehingga semuanya diperbaiki.
Anda tidak dapat mengubah alamat yang disimpan di p item dan Anda tidak
dapat menggunakan p item untuk mengubah apa yang ditunjuknya.
Namun, Anda masih dapat mengubah item tersebut.
Item tidak konstan, jadi Anda bisa mengubah item.
Anda dapat mengubah nilainya secara langsung.
Jika Anda ingin memastikan tidak ada yang diubah, Anda
harus benar-benar membuat variabel item int sebagai konstanta juga.
Dan kemudian itu akan mengatakan itu tidak akan pernah berubah.
Tapi ingat perbedaan di sini
antara pointer konstan dan nilai konstan yang ditunjuk pointer.
Anda dapat menggunakan keduanya. Anda dapat menggunakan satu atau yang lain.
Jika Anda ingin memastikan
bahwa semuanya konstan, pastikan apa yang Anda tunjuk ke variabel itu, variabel itu juga konstan. Terima kasih.