Struktur(struct) adalah pengelompokan variabel-variabel yang bernaung dalam satu nama yang sama. Berbeda dengan array yang berisi kumpulan variabel-variabel yang bertipe sama dalam satu nama, maka suatu struktur dapat terdiri atas variabel-variabel yang berbeda tipenya dalam satu nama struktur.
Variabel-variabel yang membentuk suatu struktur, selanjutnya disebut sebagai elemen dari struktur atau field. Dengan demikian dimungkinkan suatu struktur dapat berisi elemen-elemen data berbeda tipe seperti char, int, float, double, dan lain-lain. Contoh sebuah struktur adalah informasi data tanggal (date) yang berisi:
-day
-month, dan
-year
Mendefinisikan dan Mendeklarasikan Struktur
Suatu struktur didefinisikan dengan menggunakan kata kunci struct. Contoh pendefinisian sebuah tipe data struktur :
struct date
{
int month;
int day;
int year;
};int day;
int year;
struct date
{
int month, day, year;
};
yang mendefinisikan sebuah tipe data struktur bernama date yang memiliki tiga buah elemen (field) berupa :
- day
- month
- year

Untuk mendeklarasikan sebuah variabel today yang bertipe struktur date pernyataan yang diperlukan adalah sebagai berikut:

Pernyataan di atas menyatakan bahwa variabel today bertipe struktur date.
Dalam mendefinisikan sebuah struktur, elemen yang terkandung di dalamnya bisa juga berupa sebuah struktur, contoh :struct date
{
int month, day, year;
};
struct person
{
char name[30];
struct date birthday;
};
struct person student; //deklarasi var student
Diagram struktur data dari variabel student dapat digambarkan sbb :

Mengakses Elemen Struktur
Elemen dari suatu variabel struktur dapat diakses dengan menyebutkan nama variabel struktur diikuti dengan operator titik (‘.’) dan nama dari elemen strukturnya. Cara penulisannya sebagai berikut:
Untuk memberikan data nama ke field name dari variabel student di atas, maka pernyataan yang diperlukan misalnya adalah :
Pada pernyataan di atas, student.name dapat dibaca sebagai "field name dari student". Contoh berikut merupakan instruksi untuk mengisikan data pada field birthday :
Sedangkan untuk mendapatkan isi suatu field dari variabel struktur, contohnya :
Contoh pertama merupakan instruksi untuk memberikan isi dari field day ke variabel tgl. Sedangkan contoh kedua merupakan instruksi untuk menampilkan isi dari field name.
Menginisialisasi Struktur
Sebuah struktur juga bisa diinisialisasi pada saat dideklarasikan. Hal ini serupa dengan inisialisasi array, yaitu elemen-elemennya dituliskan di dalam sepasang kurung kurawal (‘{ }‘) dengan masing-masing dipisahkan dengan koma. Deklarasi struktur didahului dengan kata kunci static, contoh:
static struct zodiak bintang =
Elemen dari suatu variabel struktur dapat diakses dengan menyebutkan nama variabel struktur diikuti dengan operator titik (‘.’) dan nama dari elemen strukturnya. Cara penulisannya sebagai berikut:
variabel_struktur.nama_field
Untuk memberikan data nama ke field name dari variabel student di atas, maka pernyataan yang diperlukan misalnya adalah :
strcpy(student.name, "MUHAMMAD IHSAN");
Pada pernyataan di atas, student.name dapat dibaca sebagai "field name dari student". Contoh berikut merupakan instruksi untuk mengisikan data pada field birthday :
student.birthday.day = 10;
Sedangkan untuk mendapatkan isi suatu field dari variabel struktur, contohnya :
- tgl = student.birthday.day;
- puts(student.name);
Contoh pertama merupakan instruksi untuk memberikan isi dari field day ke variabel tgl. Sedangkan contoh kedua merupakan instruksi untuk menampilkan isi dari field name.
Menginisialisasi Struktur
Sebuah struktur juga bisa diinisialisasi pada saat dideklarasikan. Hal ini serupa dengan inisialisasi array, yaitu elemen-elemennya dituliskan di dalam sepasang kurung kurawal (‘{ }‘) dengan masing-masing dipisahkan dengan koma. Deklarasi struktur didahului dengan kata kunci static, contoh:
static struct zodiak bintang =
{"Sagitarius", 22, 11, 21, 12};