Halo, dan selamat datang kembali.
Dalam kuliah ini, saya ingin berbicara tentang mendefinisikan pointer, terutama
sintaks untuk mendeklarasikan reporter dan kemudian menggunakan alamat operator untuk
menetapkan alamat memori ke pointer.
Jadi sampai saat ini, kita harus mengebor di
kepala kita bahwa pointer tidak lebih
dari variabel yang menunjuk ke alamat memori atau berisi alamat memori sebagai nilainya.
Jadi mendeklarasikan pointer itu tidak sama dengan membuat pointer normal.
Jadi Anda tidak dapat melakukan sesuatu seperti pointer pointer.
Itu bukan cara untuk mendeklarasikan pointer. Sintaksnya sedikit berbeda.
Anda menggunakan tanda bintang. Jadi tidak cukup untuk mengatakan bahwa variabel adalah pointer.
Anda juga harus menentukan jenis variabel yang ditunjuk oleh pointer.
Jenis variabel yang berbeda membutuhkan jumlah penyimpanan yang berbeda.
Beberapa operasi penunjuk memerlukan pengetahuan tentang ukuran penyimpanan itu.
Jadi seperti variabel biasa saat Anda menentukan tipe data,
saat Anda membuat variabel tipe data pointer, Anda
juga harus menentukan tipe data tersebut.
Anda dapat mendeklarasikan pointer ke variabel bertipe int dengan melakukan hal berikut,
int bintang atau asterisk p nomor.
Itu akan memberi tahu Anda bahwa itu adalah penunjuk.
Int terlihat sama, tetapi setelah itu adalah tanda bintang.
Tanda bintang menandakan bahwa pointer, dan kemudian Anda menentukan
tipe pointer itu sendiri. Ini adalah penunjuk int.
Jenis variabel dengan nama p angka int bintang.
Itu dapat menyimpan alamat variabel apa pun bertipe int.
Sebuah pointer menyimpan alamat. Jadi jika
Anda akan menyimpan alamat variabel lain, variabel
tersebut harus didefinisikan sebagai tipe integer.
Jadi di sini PI menunjuk ke
variabel int,
char star pc, itu menunjuk ke variabel karakter, float
star pf star pg, itu adalah pointer ke variabel float.
Begitulah cara Anda mendefinisikannya, tipe penting.
Spasi antara tanda bintang dan nama penunjuk adalah opsional.
Anda tidak perlu memberi tempat di sana. Anda tidak dapat memiliki ruang.
Apa yang akhirnya terjadi,
dan kita akan berbicara tentang dereferensi variabel adalah Anda biasanya menggunakan spasi dalam deklarasi dan
kemudian ketika Anda mendereferensi Anda tidak menggunakannya.
Jadi semua deklarasi ini harus berisi spasi berdasarkan konvensi.
Nilai pointer adalah sebuah alamat,
sehingga harus direpresentasikan secara internal sebagai gambar yang tidak ditandatangani pada sebagian besar sistem.
Jadi masih harus menyimpan sesuatu. Kebetulan itu menyimpan angka heksadesimal.
Dan meskipun menyimpannya seperti bilangan bulat, jangan
menganggapnya sebagai tipe bilangan bulat.
Hal yang sama yang dapat Anda lakukan dengan bilangan bulat, Anda tidak dapat melakukannya dengan pointer dan sebaliknya.
Jadi meskipun jika Anda mencoba untuk mencetaknya, itu akan terlihat seperti angka heksadesimal, itu tidak
berarti Anda dapat memperlakukannya seperti bilangan bulat.
Misalnya, Anda dapat mengalikan satu bilangan bulat dengan bilangan bulat
lainnya, tetapi Anda tidak dapat mengalikan satu penunjuk dengan penunjuk lainnya.
Pointer benar-benar tipe baru, bukan tipe integer.
Persen p mewakili format yang ditentukan untuk pointer.
Saya akan menampilkan data yang berbeda untuk sebuah pointer dan kita akan melihat bagaimana itu digunakan.
Deklarasi sebelumnya membuat
variabel tetapi tidak ada inisialisasi. Tidak ada tugas di sana.
Anda selalu ingin memberikan nilai
ke pointer, itu sangat berbahaya jika Anda tidak menginisialisasinya.
Jadi, Anda ingin menginisialisasi pointer saat mendeklarasikannya.
Jika Anda tidak tahu apa yang
harus diinisialisasi jika itu bukan alamat variabel lain
atau Anda tidak mengalokasikan memori secara dinamis untuk itu, Anda dapat menggunakan pointer nol.
Jadi Anda dapat menginisialisasi pointer sehingga tidak menunjuk ke apa pun.
Anda melakukan ini menggunakan null.
Anda mengatakan instar p number sama dengan null untuk pointer ke int.
Null adalah konstanta yang ditentukan oleh pustaka standar.
Ini setara dengan nol untuk sebuah pointer.
Artinya tidak mengarah ke apa-apa.
Ini dijamin tidak menunjuk ke lokasi mana pun di memori.
Jadi ini bagus jika Anda ingin melakukan ini karena artinya Anda tidak akan membuat
kesalahan apa pun dengan secara tidak sengaja melakukan buffer overflow atau menulis
ke memori yang tidak seharusnya Anda tulis.
Dengan menginisialisasi ini, sebenarnya membatasi beberapa kesalahan yang dapat Anda buat.
Kami berbicara tentang null sedikit sebelumnya. Kami berbicara tentang karakter nol.
Konsep itu berbeda dari pointer nol.
Pointer nol berarti tidak menunjuk ke apa pun, dan itu harus diinisialisasi dengan itu.
Anda perlu menambahkan direktif include untuk standar def. h jika Anda ingin menggunakan definisi
nol di sini.
Alamat operator. Jika Anda ingin menetapkan penunjuk
ke alamat, Anda
dapat menggunakan operator alamat dari variabel yang ada.
Jadi jika Anda ingin menginisialisasi variabel Anda dengan add atau sub variabel yang
Anda miliki, Anda telah menyatakan bahwa Anda menggunakan alamat operator, ampersand.
Kami telah melihat ini ketika kami membahas fungsi scanf.
Di sini kita menetapkan variabel nilai integer 99.
Kami membuat pointer bertipe int dan kami menetapkannya sebagai alamat nomor.
Kita bisa melakukan ini karena number
adalah int dan pointer yang kita buat juga menunjuk ke int.
Jadi yang harus kita lakukan setelah operator equals adalah menggunakan ampersand.
Dan sekarang nomor p akan berisi alamat nomor.
Nilai awal bilangan p adalah alamat dari bilangan variabel.
Deklarasi nomor harus mendahului deklarasi pointer yang menyimpan alamatnya karena
Anda tidak dapat
menetapkan sesuatu yang tidak memiliki memori
yang dialokasikan ke pointer.
Jika Anda mencoba menetapkan nomor penunjuk itu, nomor tidak ada kecuali Anda melakukannya setelahnya.
Untuk menetapkan alamat ke pointer, alamat
itu harus memiliki memori yang dialokasikan untuk itu.
Jika tidak, kompiler akan mengeluh.
Berhati-hatilah karena tidak ada yang istimewa tentang deklarasi pointer.
Anda dapat mendeklarasikan variabel reguler dan pointer dalam pernyataan yang sama.
Jadi bisa dibilang double value, p value f num.
Dalam pernyataan ini di sini, ini
adalah satu-satunya variabel kedua p val adalah pointer, dua lainnya hanya ganda.
Itu sedikit lebih eksplisit, sedikit lebih jelas
dalam deklarasi itu. Tetapi bagaimana jika Anda mengatakan dalam
bintang pq, ini menyiratkan bahwa keduanya adalah penunjuk dan bukan.
Kami hanya memiliki satu pointer int di sini yaitu p,
variabel q hanya untuk mengetik int.
Adalah kesalahan umum untuk berpikir bahwa p dan q adalah pointer.
Jadi berhati-hatilah saat Anda mendeklarasikan pointer pada banyak variabel pada baris yang sama.
Ini juga merupakan ide yang baik untuk menggunakan nama yang dimulai dengan p sebagai nama penunjuk.
Ini akan memberi tahu Anda bahwa, variabel itu adalah penunjuk hanya dengan melihatnya.
Jadi biasanya Anda melakukan semua deklarasi variabel di bagian atas
program, biasanya di dalam fungsi utama.
Dan ketika Anda melihat variabel tersebut digunakan nanti
dalam program, Anda dapat dengan mudah mengidentifikasi tipe data yang berbeda
atau tipe pointer yang berbeda karena mereka memiliki p sebagai awalan.
Jadi kuliah ini hanya membahas
bagaimana Anda dapat mendefinisikan, mendeklarasikan sebuah pointer dan kemudian menetapkan alamat
dari variabel yang ada ke sebuah pointer.
Sekarang ada kasus ketika Anda tidak ingin selalu menetapkan
nilai pointer pada variabel yang ada, mungkin Anda ingin mengalokasikan memori baru.
Kita akan membicarakannya di kuliah berikutnya. Tapi sekarang, kita akan membuatnya tetap sederhana.
Kita akan fokus menggunakan pointer dari tipe
int dan tipe mudah yang berbeda seperti double atau float.
Dan kita akan berkonsentrasi untuk
menetapkan variabel yang ada, alamat dan melihat cara kerjanya.
Jadi mari kita bergerak maju. Terima kasih.