C/C++
Struktur (structure) dalam C
Posted on .Struktur digunakan untuk menyimpan pelbagai pembolehubah dalam satu pembolehubah. Sebagai contoh jika kita mahu menyimpan nama dan umur pekerja dalam hanya satu pembolehubah seperti contoh di bawah. Kita boleh mengakes pembolehubah-pembolehubah di dalam pembolehubah struktur ini dengan menggunakan “.”.
#include
#include
#include
struct pekerja {
char nama[20];
int umur;
int gaji;
};
int main(int argc, char *argv[])
{
struct pekerja pekerja1;
strcpy(pekerja1.nama, "Karim");
pekerja1.umur = 23;
pekerja1.gaji = 5000;
printf("Pekerja bernama %s berumur %d tahun mempunyai gaji sebanyak RM%d\n",
pekerja1.nama, pekerja1.umur, pekerja1.gaji);
system("PAUSE");
return 0;
}
Dalam tutorial pembolehubah (rujuk di sini), saya ada menceritakan tentang analogi kotak. Ia masih boleh diaplikasi dalam kes ini di mana anda boleh menganggap pembolehubah struktur ini adalah sebuah kotak yang besar yang mengandungi beberapa kotak yang lain.
Kod di atas boleh digantikan dengan kod di bawah yang bagi saya lebih senang digunakan.
#include
#include
#include
typedef struct pekerja {
char nama[20];
int umur;
int gaji;
} pekerja_t;
int main(int argc, char *argv[])
{
pekerja_t pekerja1;
strcpy(pekerja1.nama, "Karim");
pekerja1.umur = 23;
pekerja1.gaji = 5000;
printf("Pekerja bernama %s berumur %d tahun mempunyai gaji sebanyak RM%d\n",
pekerja1.nama, pekerja1.umur, pekerja1.gaji);
system("PAUSE");
return 0;
}
Pointer kepada struktur
Sepertimana pembolehubah lain, kita juga mempunyai pointer struktur.
#include
#include
#include
typedef struct pekerja {
char nama[20];
int umur;
int gaji;
} pekerja_t;
int main(int argc, char *argv[])
{
pekerja_t pekerja1;
pekerja_t * ptr = &pekerja1;
strcpy(pekerja1.nama, "Karim");
pekerja1.umur = 23;
pekerja1.gaji = 5000;
printf("Pekerja bernama %s berumur %d tahun mempunyai gaji sebanyak RM%d\n",
pekerja1.nama, pekerja1.umur, pekerja1.gaji);
printf("Pekerja bernama %s berumur %d tahun mempunyai gaji sebanyak RM%d\n",
(*ptr).nama, (*ptr).umur, (*ptr).gaji);
printf("Pekerja bernama %s berumur %d tahun mempunyai gaji sebanyak RM%d\n",
ptr->nama, ptr->umur, ptr->gaji);
system("PAUSE");
return 0;
}
Kita mempunyai dua cara untuk mengakses data dari pointer struktur iaitu samada menggunakan (*ptr).nama ataupun dengan cara yang lebih mudah ptr->nama.
Fairuz
http://www.tutorialmelayu.comSystem Engineer (Texas Instruments France), Masters in Electronics , Embedded System Engineering,