Langsung ke konten utama

Variabel Static pada Bahasa C

Variabel static memiliki properti dari penyimpanan nilai setelah variabel tersebut keluar dari scope-nya. Variabel static menyimpan nilai sebelumnya pada scope sebelumnya dan tidak diinisialisasi lagi pada scope yang baru.

sintak:
static data_type var_name = var_value;

Berikut ini beberapa fakta menarik tentang variabel static pada bahasa C:
satu, sebuah variabel static int tetap berada pada memori selama program dijalankan. Sebuah variabel normal atau auto akan dihancurkan memorinya ketika sebuah fungsi memanggil dimana variabel tersebut dideklarasikan ketika telah selesai beroperasi.

Contoh, digunakan static int untuk menghitung angka setiap kali fungsi dipanggil, tetapi pada variabel auto hal ini tidak bisa dilakukan untuk proses penghitungan tersebut.

Contoh program berikut akan mencetak "1 2"

/* Variabel static pada

 bahasa C */

#include<stdio.h>

 

int fun()

{

static int count = 0;

count++;

return count;

}

 

int main()

{

printf("%d ", fun());

printf("%d ", fun());

return 0;

}

Output:
1 2

Namun program berikut ini akan mencetak hasil "1 1"

/* Variabel static pada

 bahasa C */

#include<stdio.h>

 

int fun()

{

int count = 0;

count++;

return count;

}

 

int main()

{

printf("%d ", fun());

printf("%d ", fun());

return 0;

}

Output:
1 1

dua, Variabel static mengalokasikan memori pada segmen data, tetapi tidak pada segmen stack.

tiga, Variabel static seperti variabel global diinisialisasi dengan nilai 0 jika tidak diinisialisasi secara eksplisit. Contohnya seperti pada program berikut ini, nilai dari x akan dicetak sebagai 0, jika nilai dari y adalah garbage. Seperti terlihat pada program berikut:

/* Variabel Static Bahasa C */

#include <stdio.h>

 

int main()

{

static int x;

int y;

printf("%d \n %d", x, y);

}

Output:
0
[some_garbage_value]

empat, Pada bahasa C, variabel static hanya dapat diinisialisasi menggunakan konstanta literal. Contoh, perhatikan kesalahan program berikut pada saat kompilasi.

/* Variabel Static

 Bahasa C */

#include<stdio.h>

 

int initializer(void)

{

return 50;

}

 

int main()

{

static int i = initializer();

printf(" value of i = %d", i);

getchar();

return 0;

}

Output:
 In function 'main':
9:5: error: initializer element is not constant
     static int i = initializer();
     ^

lima, Variabel static global dan fungsi juga dimungkinkan penerapannya pada bahasa C dan C++. Tujuannya adalah membatasi scope dari variabel atau fungsi menuju sebuah file.

enam, Variabel static tidak seharusnya dideklarasikan di dalam structure. Alasannya, adalah kompilator membutuhkan seluruh elemen structure agar dapat diletakkan bersama dengan alokasi memori untuk anggota structure secara berdekatan. Sangat dimungkinkan untuk mendeklarasikan structure di dalam sebuah fungsi atau segmen stack ataupun alokasi memori dinamis atau segmen heap ataupun juga secara global seperti BSS atau segment data. Apapun bentuk kasusnya, semua anggota struktur harus berada pada segmen memori sama karena nilai untuk elemen structure dengan menghitung elemen offset dari alamat awal dari struktur. Memisahkan satu anggota saja ke segmen data mengalahkan tujuan variabel statis dan dimungkinkan untuk memiliki seluruh structure sebagai statis.

Komentar

  1. Variabel statis atau static variables adalah variabel yang dapat didefinisikan pada bagian dalam ataupun pada bagian luar dari fungsi yang terdapat pada bahasa C. Variabel tersebut nilainya bersifat lokal sesuai dengan blok tempat pendeklarasiannya. Nilai defaul dari variabel statis adalah nol. Variabel statis akan tetap aktif atau akan tetap dialokasikan memorinya selama program tersebut dijalankan.

    BalasHapus
  2. Apa fungsi dari variabel statis?

    BalasHapus
    Balasan
    1. Variabel statis adalah jenis variabel yang terkait dengan kelas pendeklarasiannya itu sendiri. Variabel statis digunakan untuk melacak informasi yang berhubungan dengan logika pada bagian keseluruhan kelas atau fungsi pada bahasa C, dimana hal ini berkebalikan dengan nilai variabel yang sifatnya bervariasi dari satu instance terhadap instance lainnya.

      Hapus
  3. Oke, maksih infornya, jadi sedikit paham tentang fungsi variabel static

    BalasHapus

Posting Komentar

Respon komentar 7 x 24 jam, so please be patient :D