Struktur Data C++: Panduan untuk Pemula tentang Struktur

Helo kepada semua pembangun C++ masa depan! Hari ini, kita akan menyusuri perjalanan yang menarik ke atas dunia struktur C++. Jangan khawatir jika anda baru untuk pemrograman – saya akan menjadi pemandu anda yang mesra, membuka konsep yang kompleks menjadi pecahan kecil dan mudah untuk ditelan. Jadi, rakamkan minuman kesukaan anda, dapatkan kenyamanan, dan mari kita melompat!

C++ Data Structures

Apakah itu Struktur?

Sebelum kita masuk ke atas detil, mari kita mulakan dengan asas. Bayangkan anda sedang menguruskan satu peristiwa (kerana siapa yang tidak suka peristiwa yang baik, kan?). Anda perlu untuk mengesan butiran berbeza bagi setiap tetamu – nama mereka, umur, dan sama ada mereka membawa hidangan. Di atas C++, struktur (atau struct) adalah seperti rak yang boleh menahan semua jenis maklumat yang berbeza tentang entiti tunggal (dalam kes ini, tetamu) di atas satu paket yang kemas.

Definisi Struktur

Mari lihat bagaimana kita boleh membuat struktur tetamu peristiwa kita di atas C++:

struct TetamuPeristiwa {
string nama;
int umur;
bool membawaHidangan;
};

Berikut adalah apa yang berlaku di atas kod ini:

  1. Kita mula dengan kata kunci struct untuk memberitahu C++ kita sedang membuat struktur.
  2. Kita memberikan struktur kita nama, TetamuPeristiwa.
  3. Di atas rakis {}, kita definisikan ahli struktur kita:
  • nama adalah rakau untuk menyimpan nama tetamu
  • umur adalah integer bagi umur tetamu
  • membawaHidangan adalah boolean (benar/palsu) untuk menunjukkan jika mereka membawa makanan

Ingat untuk mengakhiri definisi struktur anda dengan tanda semicolon ;. Ini adalah kesilapan umum untuk melupakan ini, jadi sentiasa periksa sekali lagi!

Mengakses Ahli Struktur

Sekarang kita ada TetamuPeristiwa struktur, mari lihat bagaimana kita boleh menggunakannya untuk mengesan tetamu kita:

int utama() {
TetamuPeristiwa alice;
alice.nama = "Alice";
alice.umur = 25;
alice.membawaHidangan = true;

cout << alice.nama << " adalah " << alice.umur << " tahun dan ";
if (alice.membawaHidangan) {
cout << "membawa hidangan ke atas peristiwa!";
} else {
cout << "tidak membawa hidangan ke atas peristiwa.";
}

return 0;
}

Di atas contoh:

  1. Kita membuat pembolehubah TetamuPeristiwa yang dipanggil alice.
  2. Kita guna operator titik (.) untuk mengakses dan tetapkan ahli alice.
  3. Kita kemudian guna operator titik yang sama untuk mengakses ahli apabila mencetak maklumat tentang Alice.

Apabila anda menjalankan kod ini, ia akan menghasilkan:

Alice adalah 25 tahun dan membawa hidangan ke atas peristiwa!

Struktur sebagai Argumen Fungsi

Struktur menjadi lebih kuat apabila kita gunakannya dengan fungsi. Mari kita buat fungsi untuk menyambut tetamu peristiwa kita:

void sambutTetamu(TetamuPeristiwa tetamu) {
cout << "Selamat datang, " << tetamu.nama << "! ";
if (tetamu.membawaHidangan) {
cout << "Terima kasih kerana membawa hidangan!";
} else {
cout << "Nikmati makanan!";
}
cout << endl;
}

int utama() {
TetamuPeristiwa bob = {"Bob", 30, false};
sambutTetamu(bob);

return 0;
}

Di atas kod:

  1. Kita definisikan fungsi sambutTetamu yang mengambil TetamuPeristiwa sebagai argumen.
  2. Di atas utama(), kita membuat tetamu baru bob menggunakan inisialisasi ringkas.
  3. Kita luluskan bob ke fungsi sambutTetamu kita.

Ini akan menghasilkan:

Selamat datang, Bob! Nikmati makanan!

Penunjuk ke Struktur

Sekarang, mari kita bercakap tentang penunjuk. Bayangkan anda adalah perancang peristiwa, dan anda mahu untuk dapat mengemas kini maklumat tetamu secara efisien. Penunjuk membenarkan kita untuk mengakses dan mengubahsuai struktur asal secara langsung, bukannya bekerja dengan salinan.

void kemasKiniUmurTetamu(TetamuPeristiwa* tetamu, int umurBaru) {
tetamu->umur = umurBaru;
}

int utama() {
TetamuPeristiwa charlie = {"Charlie", 22, true};
cout << "Umur Charlie sebelum kemas kini: " << charlie.umur << endl;

kemasKiniUmurTetamu(&charlie, 23);
cout << "Umur Charlie selepas kemas kini: " << charlie.umur << endl;

return 0;
}

Di atas contoh:

  1. Kita definisikan fungsi kemasKiniUmurTetamu yang mengambil penunjuk ke TetamuPeristiwa dan umur baru.
  2. Kita guna operator anak panah -> untuk mengakses ahli struktur melalui penunjuk.
  3. Di atas utama(), kita luluskan alamat charlie ke fungsi kita menggunakan operator &.

Kod ini akan menghasilkan:

Umur Charlie sebelum kemas kini: 22
Umur Charlie selepas kemas kini: 23

Kata Kunci typedef

Terakhir tetapi tidak ketinggalan, mari kita bercakap tentang typedef. Kata kunci ini membenarkan kita untuk membuat alias bagi jenis data, membuat kod kita lebih mudah dibaca dan dipelihara.

typedef struct {
string nama;
int umur;
bool membawaHidangan;
} Tetamu;

int utama() {
Tetamu david = {"David", 28, false};
cout << david.nama << " adalah " << david.umur << " tahun." << endl;

return 0;
}

Di atas kod:

  1. Kita guna typedef untuk membuat alias Tetamu bagi struktur kita.
  2. Sekarang kita boleh guna Tetamu secara langsung bukannya struct TetamuPeristiwa.

Ini menjadikan kod kita lebih bersih dan lebih mudah dibaca, terutamanya apabila berurusan dengan struktur yang kompleks.

Penutup

Tahniah! Anda baru sahaja mengambil langkah pertama anda ke atas dunia struktur C++. Kita telah membincangkan banyak bidang, dari definisi struktur hingga penggunaannya dengan fungsi dan penunjuk. Ingat, latihan membuat perferct, jadi jangan ragu untuk untuk menjalankan konsep ini di atas kod anda sendiri.

Berikut adalah rakaman cepat atas kaedah yang kita telah membincangkan:

Kaedah Keterangan
Definisi Struktur struct NamaStruktur { /* ahli */ };
Mengakses Ahli Gunakan operator titik: pembolehubahStruktur.ahli
Struktur sebagai Argumen Fungsi Luluskan oleh nilai: namaFungsi(NamaStruktur pembolehubah)
Penunjuk ke Struktur Gunakan operator anak panah: penunjukStruktur->ahli
typedef Buat alias: typedef struct { /* ahli */ } NamaAlias;

Teruskan untuk mengkod, tetap khusyuhusyen, dan happy structuring!

Credits: Image by storyset