Ulasan: Memodifikasi Struct dengan Pointer
Termasuk bagian Logika dan Alur dalam perjalanan C di Coddy. Pelajaran 49 dari 63.
Tantangan
MudahBuat program C yang menunjukkan sistem manajemen karyawan lengkap menggunakan alokasi memori dinamis, pointer struct, dan fungsi. Programmu harus:
- Definisikan
structbernamaEmployeedengan anggota berikut:- Integer
iduntuk menyimpan ID karyawan - Array karakter
nameberukuran 50 untuk menyimpan nama karyawan - Array karakter
departmentberukuran 30 untuk menyimpan nama departemen - Float
salaryuntuk menyimpan gaji karyawan - Integer
yearsOfServiceuntuk menyimpan masa kerja
- Integer
- Tulis fungsi bernama
fillEmployeeDatayang:- Menerima pointer ke struct
Employeesebagai parameter - Membaca informasi karyawan dari input dengan urutan berikut: ID, nama, departemen, gaji, masa kerja
- Menetapkan nilai ke anggota struct menggunakan operator panah
- Menghitung bonus berdasarkan masa kerja: jika years >= 5, bonus sebesar 10% dari gaji, jika tidak, sebesar 5% dari gaji
- Menambahkan bonus ke gaji:
empPtr->salary += bonus;
- Menerima pointer ke struct
- Tulis fungsi bernama
displayEmployeeyang:- Menerima pointer ke struct
Employeesebagai parameter - Mencetak informasi karyawan dengan format persis berikut:
Employee Details:ID: [id]Name: [name]Department: [department]Salary: [salary]Years of Service: [yearsOfService]
- Menerima pointer ke struct
- Tulis fungsi bernama
promoteEmployeeyang:- Menerima pointer ke struct
Employeesebagai parameter - Menaikkan gaji sebesar 15% menggunakan operator panah
- Menambah masa kerja sebanyak 1
- Mencetak
Employee promoted successfully!
- Menerima pointer ke struct
- Di fungsi main:
- Deklarasikan pointer ke struct
EmployeebernamaempPtr - Gunakan
malloc()untuk mengalokasikan memori secara dinamis untuk satu structEmployee - Periksa apakah alokasi memori berhasil:
- Jika
empPtradalahNULL, cetakMemory allocation failedlalu keluar dari program - Jika berhasil, cetak
Memory allocated successfully
- Jika
- Panggil
fillEmployeeDatauntuk mengisi data karyawan - Cetak
Initial employee data: - Panggil
displayEmployeeuntuk menampilkan informasi awal karyawan - Panggil
promoteEmployeeuntuk mempromosikan karyawan - Cetak
After promotion: - Panggil kembali
displayEmployeeuntuk menampilkan informasi terbaru - Bebaskan memori yang dialokasikan secara dinamis menggunakan
free(empPtr) - Cetak
Memory freed successfully
- Deklarasikan pointer ke struct
Tantangan ini menggabungkan semua konsep utama dari bab ini: mendefinisikan struct, alokasi memori dinamis dengan malloc(), memeriksa kegagalan alokasi, meneruskan pointer struct ke fungsi, menggunakan operator panah untuk mengakses dan mengubah anggota struct, serta membersihkan memori dengan benar menggunakan free(). Fungsi-fungsi ini menunjukkan cara pointer memungkinkan perubahan langsung pada data struct asli.
Coba sendiri
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
// TODO: Definisikan struct Employee di sini
// TODO: Implementasikan fungsi fillEmployeeData di sini
// TODO: Implementasikan fungsi displayEmployee di sini
// TODO: Implementasikan fungsi promoteEmployee di sini
int main() {
// TODO: Deklarasikan empPtr dan alokasikan memori
// TODO: Periksa apakah alokasi memori berhasil
// TODO: Isi data karyawan, tampilkan data awal, promosikan karyawan, lalu tampilkan data setelah promosi
// TODO: Bebaskan memori dan cetak pesan keberhasilan
return 0;
}Semua pelajaran di Logika dan Alur
1Dasar-Dasar Pointer
Apa Itu Pointer?Mendeklarasikan PointerOperator Address-Of (&)Operator Dereference (*)Pointer NULLRekap: Dasar-Dasar Pointer4Proyek: Utilitas Teks Sederhana
Gambaran Umum ProyekMenghitung Karakter2Pointer dan array
Nama array sebagai pointerElemen array dan pointerAritmetika pointerMembandingkan pointerRangkuman: Menelusuri array dengan pointer5Pointer dan Fungsi
Penerusan dengan NilaiMeneruskan Pointer ke FungsiMengubah Variabel melalui PointerContoh Klasik: SwapMeneruskan Array ke FungsiRingkasan: Argumen Pointer Fungsi8Struct dan Pointer
Pointer ke StructOperator Panah (->)Mengirim Struct berdasarkan NilaiMengirim Pointer StructAlokasi Dinamis StructUlasan: Memodifikasi Struct dengan Pointer11Tantangan Rangkuman Akhir
Rangkuman: Penggabungan string DinamisRangkuman: array berisi structRangkuman: Penghitung Frekuensi Kata3Array char dan String
String sebagai array charPenanda akhir nullInput String dengan scanfMenggunakan strlen()Menggunakan strcpy()Menggunakan strcat()Menggunakan strcmp()Ulasan: Fungsi String DasarLatihan sendiri: Compiler C online