Halo, dan selamat datang kembali.
Karena aritmatika titik adalah jenis konsep yang sulit untuk dipahami dan
dipahami, saya ingin melalui satu contoh
terakhir yang benar-benar menunjukkan konsep ini, ia melakukan pekerjaan dengan baik.
Dan jika Anda memahami contoh ini, Anda tidak
akan memiliki masalah dengan aritmatika titik.
Jadi contoh pertama yang ingin saya tunjukkan
adalah efek menambahkan nilai integer ke pointer.
Jadi ketika kita melakukan aritmatika pointer dengan penjumlahan,
kita sebenarnya bisa melihat cara kerjanya dalam hal alamat.
Jadi di sini, di program ini, yang saya lakukan hanyalah
membuat string, array karakter, yang disebut string.
Dan kemudian saya membuat penunjuk karakter bernama p.
Saya akan melalui semua panjang string yang berlipat
ganda. Jadi saya akan melalui seluruh array.
Sebut saja dasar untuk panjang kekuatan loop dengan berbagai ukuran dan kelipatan.
Dan kemudian saya mencetak setiap
string atau karakter aktual di dalam array itu.
Dan juga apa yang saya lakukan bahwa saya
menampilkan alamat dan
kemudian alamat dengan nomor sebenarnya yang saya tambahkan ke dalamnya.
Jadi mari kita lihat outputnya saja karena outputnya
menunjukkan contoh aritmatika titik yang sangat bagus.
Jadi mari kita pergi ke blok kode dan menjalankan ini.
Jadi di sini kita berada di blok kode. Saya membersihkan kodenya sedikit.
Saya menggunakan panjang str, atur panjang str karena itu termasuk tambahan.
Dan saya hanya ingin menjalankan ini.
Jadi ketika saya menjalankan ini, apa yang akan Anda perhatikan adalah, ini
menunjukkan kepada Anda bagaimana mengingat seperti apa memori itu, dan itu menunjukkan kepada
Anda nilai-nilai melakukan aritmatika titik. Jadi, jika Anda mengatakan
beberapa sub-0, ingat, beberapa hanya berisi string.
Tetapi jika kita melihat ini dan kita mengatakan lihat
isi array, kelipatan 0 adalah a, kelipatan 1 adalah spasi dan sisanya adalah string.
Itu arraynya.
Tepat di sebelah ini sama dengan menambahkan 0 ke pointer dan
melakukan dereferensi, menambahkan 1 dan menambahkan 2.
Dan itu menunjukkan kepada Anda bagaimana Anda bisa melakukan aritmatika pointer dengan
mereferensikan pointer itu sendiri dan menambahkan angka ke dalamnya.
Jadi pointer ditambah tujuh dereferensi yang Anda dapatkan g.
Kemudian di kolom ketiga, saya menunjukkan kepada Anda alamat
yang sebenarnya seiring dengan pertambahan. Jadi alamat setiap elemen
dalam array menggunakan ampersand hanya pada array
karakter, kita melihat alamat 060feff untuk elemen 0 dan seterusnya.
Dan kemudian kita melihat alamatnya jika kita hanya
menambahkan pointer itu sendiri tanpa melakukan dereferensi, dan Anda
akan melihat alamat-alamat itu berbaris.
Dan kemudian kita dapat melihat sintaks untuk melihat apa yang terjadi di sini
dalam hal hal pertama yang benar-benar kita tampilkan adalah indeks dalam array yang hanya merupakan penghitung.
Dan kemudian kami menampilkan persen c yang merupakan
karakter pada array.
Hal berikutnya yang kami tampilkan adalah
mendereferensi pointer plus I.
Jadi di sini yang kita lakukan adalah menampilkan I
dan kemudian kita menampilkan dereference dari pointer plus I,
nilai sebenarnya.
Jadi
kami menampilkan sebagai
d hanya penghitung yang sebenarnya dan kemudian titik
c adalah dereferensi kami. Jadi p adalah penunjuk kita.
Kami hanya mengatakan p plus I, aritmatika pointer, dan
kemudian kami mendereferensikannya.
Dan kemudian untuk mendapatkan
alamatnya, yang perlu kita lakukan untuk mendapatkan alamat array
adalah katakanlah ampersand multiple dan kemudian index.
Untuk mendapatkan yang pertama mendapatkan alamat pointer di sini kita hanya
mengatakan p
plus I untuk mendapatkan penghitung aktual
yang menunjukkan kepada Anda bagaimana kita menaikkan p
itu, kita hanya melakukan p ditambah persen d.
Tapi itu melakukan pekerjaan yang
baik untuk menunjukkan berbagai cara bahwa memori yang
kita tunjuk ke alamat
benar-benar ditampilkan dan bagaimana mereka setara
dengan indeks yang berbeda dalam array dan pointer yang sebenarnya.
Saya pikir ini melakukan pekerjaan yang baik.
Saya ingin melihat satu contoh lagi yang melakukan pekerjaan
bagus lainnya tentang aritmatika pointer dengan long. Karena di sini ini
adalah bilangan bulat. Jadi yang harus kita lakukan adalah menambahkan
satu dan secara otomatis naik ke byte berikutnya dan seterusnya. Mari kita lihat apa yang kita lakukan, kita rindu.
Jadi dalam contoh ini, saya juga ingin mendemonstrasikan bagaimana Anda dapat melakukan hal
yang sama dengan pointer panjang dan panjang.
Dengan penunjuk karakter, itu hanya array karakter string.
Tetapi bahkan untuk array yang panjang, yang ukurannya berbeda,
kita masih dapat mengulanginya menggunakan pointer dan
Anda dapat melihat bagaimana jumlah byte sebenarnya berubah.
Jadi, meskipun kita mengatakan kita memiliki pointer yang panjang dan kita menambahkan satu padanya, kita sebenarnya menambahkan
4 byte ke dalamnya karena long sedikit lebih besar dan kita akan melihatnya dalam contoh ini.
Jadi sekarang mari kita jalankan contoh ini dalam blok kode.
Jadi inilah contoh kita. Sekali lagi, kami memiliki penghitung bilangan bulat, penghitung loop.
Kami memiliki array panjang 15l.
Kami menentukan l dengan meletakkan akhiran kemudian kami menentukan l mereka,
long mereka kami memiliki penunjuk panjang yang menunjuk ke beberapa.
Sekali lagi, karena ini adalah array, kita tidak perlu menggunakan alamat operator.
Kita akan melalui seluruh panjang. Di sini kita tidak bisa menggunakan panjang adukan
kita harus menggunakan ukuran, dan kita sebenarnya harus membaginya dengan setiap titik dalam array.
Jadi ukuran total dibagi dengan satu tempat dalam array, saat
itulah kita ingin melompat keluar
karena ini mengingat alamat kita yang masing-masing bertambah 4 byte.
Dan sekali lagi apa yang kami lakukan di sini adalah kami
hanya menampilkan pointer versus array dan menunjukkan kepada Anda
bagaimana mereka terkait dan kemudian kami menampilkan jumlah
total byte aktual yang ada di sistem kami.
Dan sekali lagi ini hanya menunjukkan bagaimana array
terkait dengan pointer.
Jadi jika kita menjalankan
ini, kita akan melihat output yang serupa. Tapi yang sedikit berbeda di
sini adalah ukuran alamat, naik 4 byte. Jadi kita akan mencetak alamat dan pointer.
Jadi untuk alamat dan pointer ditambah
0, itu akan sama
dengan array sub 0 yaitu alamat 6356728.
Dan untuk mendereferensi pointer, kita akan mendapatkan nilai 15.
Jadi p plus 0 masih akan sama dengan array sub 0.
Dan sekali lagi kita melakukan hal yang sama untuk p ditambah satu p ditambah
2 dan p ditambah 3, semuanya setara dengan titik yang benar dalam larik untuk indeks.
Alamatnya naik 4 byte, tapi kita masih bisa menambahkan satu 2 dan 3
dan kita melihat bahwa nilainya sama.
Dan kemudian memberi tahu kita bahwa panjang ini menempati 4 byte dan itulah sebabnya alamatnya naik 4 byte.
Apa yang penting di sini adalah kita masih dapat menambahkan
satu dan kompiler tahu untuk pergi ke alamat berikutnya.
Jadi apakah kita memiliki panjang atau karakter atau apa pun
tipe data tertentu yang ada di dalam sistem, menambahkan satu
atau 2 akan menambah jumlah byte yang benar.
Jadi contoh keren lainnya yang ingin
saya tunjukkan kepada Anda karena aritmatika pointer ini sangat penting
dan sangat berguna saat mengulangi
atau melintasi array, itu membuat jauh lebih bersih dan lebih efisien.
Jadi saya harap ini membantu. Terima kasih.