Lompat ke konten Lompat ke sidebar Lompat ke footer

Struct pada Struktur Data

Data structures

Struct merupakan suatu struktur data yang menggabungkan beberapa data dengan berbagai tipe data yang memiliki ukuran yang berbeda (heterogen) di kelompokkan dalam satu deklarasi unik dan saling berkaitan, dengan format:

struct model_name {
    type1element1;
    type1element1;
    type1element1;
    .
    .
} object_name;


dimana model_name adalah nama untuk model tipe strukturnya dan parameter optional object_name merupakan identifier yang valid untuk objek struktur.

Diantara kurung kurawal { } berupa tipe dan sub-identifier yang mengacu ke elemen pembentuk struktur.  Jika pendefinisian struktur menyertakan parameter model_name (optional), maka parameter tersebut akan menjadi tipe yang valid ekuivalen dengan struktur.


Contoh:

struct products {
char name[30];
float price;
};
product apple;
products orange, melon;

Didefinisikan model struktur products dengan dua field: name dan price, dengan tipe data yang berbeda. Kemudian tipe struktur tadi (products) digunakan untuk mendeklarasikan tiga objek: apple, orange dan melon.

Ketika dideklarasikan, products menjadi nama tipe yang valid seperti tipe dasar int, char atau short dan dapat mendeklarasikan objects (variables) dari tipe tersebut.

Optional field yaitu object_name dapat dituliskan pada akhir deklarasi struktur untuk secara langsung mendeklarasikan object dari tipe struktur.


Contoh:

Struct products {
char name[30];
float price;
} apple, orange, melon;


Sangat penting untuk membedakan antara structure model_name, dan structure object_name.
  • model_name adalah type, dan
  • object adalah variable
Kita dapat membuat banyak object (variables) dari suatu model (type)

Struct dapat dideklarasikan secara bertingkat, yaitu salah satu field struct bertipe struct lainnya (nested Structure).  Selain itu struct juga dapat digabungkan dengan array, struct yang field-nya berupa array atau array yang setiap elemennya berupa structure.


Structure parameter


Structure dapat dikirim ke function sebagai parameter, jika structure ini hanya merupakan data masukan, maka dapat dikirimkan dengan call by value, tetapi bila structure yang dikirimkan akan mengalami perubahan nilai maka pengiriman parameter harus dengan call by reference dengan mengirimkan pointer to struct.

Struct juga dapat menjadi return type sebuah function.


Contoh struct1 (pass by reference):

#include<stdio.h>
#include<conio.h>

struct t_hitung{
    int x; 
    int y;
};

int Hitung(struct t_hitung *Nilai)
{
    int y;
    y=Nilai->y*5+2;
    Nilai->x=25;
    return y;
}

int main()
{
    struct t_hitung *Angka;
    int m;
    Angka->x=5, Angka->y=10;
    m = Hitung(Angka);
    printf("x= %d\ny= %d\nm= %d",Angka->x,Angka->y, m);
    return 0;
}


Contoh struct2 (array structures) :

#include<stdio.h>
#include<conio.h>
#define X 5

struct products{
    char name[30];
    float price;
};

int main()
{
    int i, j, jml;
    struct products Apple[X];
    char temp[30];
    float Harga;
    printf("Berapa jenis apel [Max %d]: ", X);
    scanf("%d", &jml);
    for(i=0;i<jml;i++)
{
    printf("Masukkan nama buah ke-%d: ", i+1);
    flushall();
    gets(temp);
    strcpy(Apple[i].name, temp);
    printf("Masukkan harga buah : ");
    scanf("%f", &Harga);
    Apple[i].price=Harga;
}
printf("\n\nHasil :\n");
for(j=0;j<jml;j++)
printf("%s Rp %.2f\n",Apple[j].name, Apple[j].price);
return 0;
}