C++ Academy · Pelajaran

Penyahrujukan dan Aritmetik Penuding

Baca memori melalui penuding dan telusuri tatasusunan dengan aritmetik penuding.

Pelajaran 2 daripada 413 langkah

Penyahrujukan dan Aritmetik Penuding ialah pelajaran C++ Academy percuma di CoddyKit. Ini ialah pelajaran 2 daripada 4. Sebanyak 3 pelajaran dalam laluan pembelajaran ini boleh dibaca sepenuhnya secara percuma — selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan praktikal dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Pelajaran ini merupakan sebahagian daripada laluan pembelajaran C++ Academy, dan kemajuan anda disegerakkan merentas web serta aplikasi CoddyKit. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.

Membaca Melalui Penuding

Operator unari * membaca nilai yang ditunjukkan oleh penuding.

int x = 42;
int* p = &x;
std::cout << *p;   // 42

Menulis Melalui Penuding

Anda juga boleh menggunakan *p di sebelah kiri tugasan untuk menulis kepada sasaran.

*p = 100;
std::cout << x;   // 100

Operator Anak Panah

Untuk penuding kepada struktur atau kelas, p->member ialah bentuk ringkas bagi (*p).member. Gunakan anak panah — ini ialah konvensyennya.

struct Point { int x, y; };
Point pt{3, 4};
Point* p = &pt;
std::cout << p->x;   // 3

Asas Aritmetik Penuding

Anda boleh menambah atau menolak integer daripada penuding. Hasilnya bergerak mengikut langkah bersaiz elemen — bukan bait.

int a[5] = {10, 20, 30, 40, 50};
int* p = a;        // points to a[0]
p = p + 2;         // now points to a[2]
std::cout << *p;   // 30

Menelusuri Tatasusunan

Aritmetik penuding meniru pengindeksan. a[i] dan *(a + i) adalah serupa — dan p[i] berfungsi pada sebarang penuding.

int a[] = {1, 2, 3, 4};
int* p = a;
for (int i = 0; i < 4; ++i) {
    std::cout << *(p + i) << " ";
}

Perbezaan antara Dua Penuding

Menolak dua penuding dalam tatasusunan yang sama memberikan jarak dalam bilangan elemen — jenisnya ialah std::ptrdiff_t.

int a[5];
int* first = a;
int* last  = a + 5;
std::ptrdiff_t len = last - first;  // 5

Membandingkan Penuding

Anda boleh membandingkan kesamaan penuding dengan == dan !=, serta membandingkan susunannya dengan < hanya apabila kedua-duanya menunjuk ke dalam tatasusunan yang sama.

Melakukan Lelaran dengan Penuding

Lelaran gaya C yang lazim menggunakan dua penuding — mula dan akhir.

int a[] = {1, 2, 3, 4, 5};
for (int* p = a; p != a + 5; ++p) {
    std::cout << *p << " ";
}

Kedudukan Selepas Akhir Dibenarkan

Anda boleh mengira penuding satu kedudukan selepas elemen terakhir (penuding "akhir") — tetapi menyahrujuknya tidak ditakrifkan.

Kesilapan Aritmetik Penuding

Kesilapan yang biasa berlaku:

  • Melepasi sempadan tatasusunan
  • Mencampurkan jenis penuding (int* + char*)
  • Melupakan bahawa aritmetik menggunakan unit elemen, bukan bait

Utamakan Lelaran atau Julat

C++ moden mengutamakan lelaran dan pustaka julat berbanding aritmetik penuding mentah. Penuding kekal penting untuk API C dan kod aras sangat rendah.

Semakan Pantas

Jika p ialah int* yang menunjuk ke permulaan int 4 bait, ke manakah p + 1 menunjuk?

Imbas Kembali

*p membaca atau menulis sasaran. p->member mengakses ahli struktur. Aritmetik penuding bergerak mengikut langkah bersaiz elemen. Gunakannya dengan cermat — lelaran dan julat biasanya merupakan pilihan yang lebih selamat dalam kod moden.

Percuma untuk bermula

Pelajari C++ dengan tutor kecerdasan buatan — percuma

Tulis dan jalankan kod sebenar dalam pelayar anda, dapatkan bantuan segera daripada tutor kecerdasan buatan yang tersedia 24/7, dan sambung semula dari tempat anda berhenti di web atau dalam aplikasi.

Kursus
51
Pelajaran
203

Soalan Lazim

Adakah pelajaran “Penyahrujukan dan Aritmetik Penuding” percuma?

Ya — sebanyak 3 pelajaran dalam laluan pembelajaran C++ Academy, termasuk “Penyahrujukan dan Aritmetik Penuding”, boleh dibaca sepenuhnya secara percuma di web ini. Selepas itu, CoddyKit PRO membuka akses kepada semua pelajaran, serta latihan interaktif dengan penyunting kod terbina dalam dan tutor kecerdasan buatan yang tersedia 24/7. Kursus C++ Academy merangkumi sejumlah 4 pelajaran.

Apakah yang akan saya pelajari dalam “Penyahrujukan dan Aritmetik Penuding”?

Baca memori melalui penuding dan telusuri tatasusunan dengan aritmetik penuding. Anda berlatih C++ Academy menggunakan kod praktikal yang dijalankan terus dalam pelayar, manakala tutor kecerdasan buatan 24/7 menjawab soalan anda semasa anda mengikuti pelajaran.

Adakah saya memerlukan pengalaman untuk memulakan C++ Academy?

Tiada pengalaman terdahulu diperlukan. Pembelajaran C++ Academy di CoddyKit disusun untuk pelajar daripada peringkat pemula hingga lanjutan, jadi anda boleh bermula di sini atau dari awal dan belajar mengikut kadar anda sendiri. Ini ialah pelajaran 2 daripada 4.

Berapa lamakah pelajaran “Penyahrujukan dan Aritmetik Penuding” diambil?

Kebanyakan pelajaran CoddyKit mengambil masa kira-kira 5–10 minit. Setiap pelajaran ringkas dan interaktif, jadi anda boleh membuat kemajuan secara berterusan dan menyambung tepat dari tempat anda berhenti di web atau aplikasi.

Bolehkah saya menulis dan menjalankan kod dalam pelajaran C++ Academy ini?

Ya. Setiap pelajaran C++ Academy menyertakan penyunting kod terbina dalam, jadi anda boleh menulis dan menjalankan kod sebenar terus dalam pelayar serta menerima maklum balas kecerdasan buatan serta-merta — tanpa memerlukan persediaan setempat.

Semua pelajaran dalam kursus ini

  1. Penuding Mentah dan Operator Address-of
  2. Penyahrujukan dan Aritmetik Penuding
  3. nullptr dan Keselamatan Penuding Null
  4. Masa untuk Menggunakan Penuding berbanding Rujukan
← Kembali ke C++ Academy