Lompat ke konten Lompat ke sidebar Lompat ke footer

Kelas Penyimpanan Bahasa C dan Fungsinya

Kelas penyimpanan digunakan untuk mendeksripsikan fitur dari variabel atau fungsi. Fitur ini pada dasarnya mencakup scope, visibilitas, dan life-time yang membantu untuk melacak keberadaan dari variabel tertentu selama program dijalankan.


Sebelum lebih lanjut mempelajari materi tentang Kelas Penyimpanan Bahasa C dan Fungsinya, terlebih dahulu pelajari materi tentang: Tipe Data Float dan Double Bahasa C Beserta Fungsinya, Karakter Aritmatika Bahasa C dan Fungsinya, dan Tipe Data Konversi Bahasa C dan Fungsinya.

Bahasa C menggunakan empat kelas penyimpanan seperti diperlihatkan pada gambar 1, yang bernama:

Gambar 1 Kelas Penyimpanan Bahasa C
Gambar 1 Kelas Penyimpanan Bahasa C

  • auto: Merupakan kelas penyimpanan default (storage default class) untuk segala deklarasi variabel di dalam sebuah fungsi atau sebuah blockKeyword auto biasanya digunakan ketika membuat program dalam bahasa C. Variabel auto hanya bisa diakses dengan block atau fungsi yang telah dideklarasikan dan tidak berada diluar dari scope-nya. Keyword ini hanya bisa diakses dengan block bersarang bersamaan parent block atau fungsi pada variabel auto yang telah dideklarasikan. Namun, auto juga bisa diakses dari luar scope-nya jika menggunakan konsep pointer, dengan cara melakukan pointing atau penunjukkan pada lokasi memori yang tepat dimana variabel berada. Keyword ini diberi nilai sisa secara otomatis dimanapun keyword dideklarasikan.
  • extern: Kelas penyimpanan extern secara sederhana memberitahukan bahwa variabel telah didefinisikan dan tidak berada pada block sama dengan block yang menggunakannya. Sederhanya, nilai yang telah ditetapkan terhadap kelas penyimpanan tidak berada bersama pada block dimana kelas tersebut digunakan. Nilai yang ditetapkan berada pada block berbeda dan dapat dilakukan ovewritten atau perubahan pada block yang berbeda pula. Sehingga variabel extern tidak lain adalah variabel global yang diinisialisasi dengan nilai legal dimana variabel tersebut dideklarasikan sesuai perintah dimana variabel tersebut akan digunakan. Variabel ini dapat diakses dengan fungsi atau block apapun. Juga, sebuah variabel global normal dapat membuat extern pula dengan menambahkan keyword 'extern' sebelum pendeklarasian atau pendefinisian oleh fungsi atau block apapun. Pada dasarnya hal ini menandakan bahwa, tidak dilakukan inisialisasi sebuah variabel baru melainkan hanya menggunakan atau melakukan akses kepada variabel global semata. Tujuan utama dari penggunakan variabel extern adalah variabel tersebut dapat diakses antara dua file berbeda yang menjadi satu bagian dari program.
  • static: Kelas penyimpanan digunakan untuk mendeklarasikan variabel static yang secara populer digunakan ketika membuat program dalam bahasa C. Variabel static memiliki properti dari penyimpanan nilai bahkan setelah nilai tersebut keluar dari scope-nya. Karena hal tersebut, variabel static hanya menggunakan nilai terakhir yang digunakan pada scope-nya. Sehingga bisa dikatakan bahwa variabel ini hanya diinisialisasi sekali dan akan tetap exist sampai proses atau program telah berhenti dijalankan. Sehingga, tidak ada memori baru yang dialokasikan karena memori tersebut tidak dideklarasikan ulang. Scope dari variabel ini bersifat lokal pada fungsi dimana variabel tersebut didefinisikan. Variabel static global dapat diakses dimanapun pada bagian program. Secara otomatis, ditetapkan nilai 0 oleh kompilator ketika variabel ini dideklarasikan.
  • register: Kelas penyimpanan yang mendeklarasikan variabel register memiliki fungsi sama seperti variabel auto. Perbedaannya adalah kompilator mencoba untuk menyimpan variabel ini pada register dari mikroprosesor jika free register tidak tersedia. Hal ini membuat penggunaan dari variabel register lebih cepat daripada variabel yang disimpan pada memori selama waktu runtime dari program. Jika sebuah free register tidak tersedia, maka nilainya akan disimpan pada bagian memori saja. Umumnya beberapa variabel dapat diakses lebih sering pada sebuah program yang dideklarasikan dengan keyword register akan memiliki waktu running yang lebih baik terhadap sebuah program. Alamat register tidak bisa didapatkan dengan menggunakan pointer.

Baca Juga:

Untuk menyederhanakan kelas penyimpanan untuk sebuah variabel, perhatikan sintak program berikut ini:

Sintak: storage_class var_data_type var_name;

Contoh: Fungsi berikut mengikuti sintak yang sama seperti yang diberikan pada variabel sebelumnya. Perhatikan contoh program bahasa c berikut untuk lebih memahami.

// Sebuah program bahasa C

// untuk mendemonstrasikan

// perbedaan class storage

#include <stdio.h>

 

// Mendeklarasikan variabel

// yang akan dibuat eksternal

// dengan nilai awal juga da-

// pat diinisialisasi ke x

int x;

 

void autoStorageClass()

{

 

printf("\nDemonstrasi class"

" auto\n\n");

 

// Mendeklarasikan variabel

// otomatis (secara sederhana

// "int a=32;" juga dapat be-

// kerja secara baik)

auto int a = 32;

 

// Mencetak nilai variabel

// auto 'a'

printf("Nilai dari variabel "

"'a' dideklarasikan sebagai a"

"uto: %d\n",a);

 

printf("-------------------"

"-------------");

}

 

void registerStorageClass()

{

 

printf("\nDemonstrasi class"

" register\n\n");

 

// Mendeklarasikan sebuah

// variabel register

register char b = 'G';

 

// Mencetak nilai variabel

// register 'b'

printf("Nilai dari variabel "

"'b' dideklarasikan sebagai"

" register: %d\n",b);

 

printf("--------------------"

"------------");

}

 

void externStorageClass()

{

 

printf("\nDemonstrasi class"

" extern\n\n");

 

// Memberitahukan kompilator

// bahwa variabel z adalah

// variabel extern dan telah

// didefinisikan dibagian ma-

// napun (atau telah didekla-

// rasikan sebelum fungsi main)

extern int x;

 

// Mencetak variabel extern 'x'

printf("Nilai dari variabel "

"'x' dideklarasikan sebagai "

"extern: %d\n",x);

 

// Nilai dari variabel extern

// x dimodifikasi

x = 2;

 

// Mencetak nilai modifikasi

// dari variabel extern 'x'

printf("Nilai modifikasi dari"

" variabel 'x' dideklarasikan"

" sebagai extern: %d\n",x);

 

printf("---------------------"

"-----------");

}

 

void staticStorageClass()

{

int i = 0;

 

printf("\nDemonstrasi class"

" static\n\n");

 

// Dengan menggunakan sebuah

// variabel static 'y'

printf("Deklarasi 'y' sebagai"

" variabel static di dalam "

"looping.\n"

 

"Namun, deklarasi ini hanya "

"akan muncul satu kali seba"

"gai variabel static 'y'.\n"

 

"Jika tidak muncul, maka seti"

"ap kali looping atau perula"

"ngan nilai dari 'y' akan men"

"deklarasikan nilai 5 sebagai"

" nilai yang diterima dari va"

"riabel 'p'\n");

 

printf("\nMulai looping:\n");

 

for (i = 1; i < 5; i++) {

 

// Deklarasi variabel

// static 'y'

static int y = 5;

 

// Deklarasi variabel

// non-static 'p'

int p = 10;

 

// Melakukan penambahan nilai

// secara increment dari vari-

// abel y dan p sebesar 1 nilai

y++;

p++;

 

// Mencetak nilai dari y pada

// setiap kali looping atau

// perulangan

printf("\nNilai dari 'y', "

"dideklarasikan sebagai sta"

"tic, dalam %d perulangan a"

"dalah %d\n",i, y);

 

// Mencetak nilai dari p pada

// tiap kali perulangan

// atau looping

printf("Nilai dari variabel "

"non static 'p', dalam %d per"

"ulangan adalah %d\n",i, p);

}

 

printf("\nLooping berakhir:\n");

 

printf("---------------------"

"-----------");

}

 

int main()

{

 

printf("Sebuah program untuk "

"mendemonstrasikan kelas peny"

"impanan pada bahasa C\n\n");

 

// Untuk mendemonstrasikan

// storage class auto

autoStorageClass();

 

// Untuk mendemonstrasikan

// storage class register

registerStorageClass();

 

// Untuk mendemonstrasikan

// storage class extern

externStorageClass();

 

// Untuk mendemonstrasikan

// storage class static

staticStorageClass();

 

// Akhir program

printf("\n\nStorage Classes"

" telah didemonstrasikan");

 

return 0;

}


Referensi Tambahan:

Artikel ini didedikasikan kepada: Muhammad Dohan Pratama, Nikmatul Jannah, Nur Lailatul Ma'Rifah, Oktavia Gita Prastiwi, dan Rangga Argunda.

6 komentar untuk "Kelas Penyimpanan Bahasa C dan Fungsinya"

  1. Apa yang dimaksud dengan kelas penyimpanan atau storage class pada bahasa C?

    BalasHapus
    Balasan
    1. Kelas penyimpanan dalam bahasa C digunakan untuk mewakili informasi tambahan tentang suatu variabel. Kelas penyimpanan mewakili ruang lingkup dan masa pakai sebuah variabel. Kelas penyimpanan juga memberitahukan siapa saja yang dapat mengakses variabel tersebut dan darimana sumber aksesnya. Auto, extern, register, static adalah empat kelas penyimpanan yang terdapat pada bahasa C.

      Hapus
  2. Kelas penyimpanan mana yang memiliki performa tercepat pada bahasa C?

    BalasHapus
    Balasan
    1. Untuk akses tercepat dari suatu variabel pada kelas penyimpanan, maka register memiliki kemampuan yang lebih baik daripada auto. Karena variabel register disimpan pada memori register sedangkan variabel auto disimpan pada memori CPU utama.

      catatan: hanya beberapa variabel saja yang dapat disimpan dalam memori register.

      Hapus
  3. Apakah typedef juga termasuk kelas penyimpanan pada bahasa C?

    BalasHapus
    Balasan
    1. Kelas penyimpanan variabel pada bahasa C digunakan untuk menentukan apakah item tersebut memiliki akses yang bersifat global ataukah lokal. Pada bahasa C, typedef dianggap sebagai kelas penyimpanan sama seperti kelas penyimpanan lainnya (auto, register, static, extern), namun penggunaan typedef adalah lebih spesifik untuk menentukan nama alternatif terhadap jenis tipe yang tersedia pada bahasa C.

      Hapus

Hubungi admin melalui Wa : +62-896-2414-6106

Respon komentar 7 x 24 jam, mohon bersabar jika komentar tidak langsung dipublikasi atau mendapatkan balasan secara langsung.

Bantu admin meningkatkan kualitas blog dengan melaporkan berbagai permasalahan seperti typo, link bermasalah, dan lain sebagainya melalui kolom komentar.

- Ikatlah Ilmu dengan Memostingkannya -
- Big things start from small things -