Kelas Penyimpanan di C: Berbagai Jenis Kelas Penyimpanan [Dengan Contoh]

Diterbitkan: 2020-10-21

Pengkodean dengan C sangat terpusat pada penggunaan variabel di setiap program. Itu adalah aspek kunci dari pemrograman C. Setiap variabel dalam C memiliki dua properti; jenis dan kelas penyimpanan. Di antara mereka, tipe mengacu pada tipe data variabel, dan kelas penyimpanan di C menentukan ruang lingkup, masa pakai, dan visibilitas variabel. Kelas penyimpanan dalam C digunakan untuk menemukan masa pakai, visibilitas, lokasi memori, dan nilai awal suatu variabel.

Dalam posting blog ini, kita akan melihat secara mendetail kelas penyimpanan di C , jenisnya, dan bagaimana karakteristiknya memengaruhi output program dengan beberapa contoh pemrograman. Kelas penyimpanan dalam C digunakan untuk merepresentasikan informasi dari suatu variabel.

Pelajari cara membuat aplikasi seperti Swiggy, Quora, IMDB, dan lainnya

Daftar isi

Apakah Kelas Penyimpanan Di C?

Kelas penyimpanan di C mengalokasikan area penyimpanan variabel yang akan disimpan dalam memori. Mereka disimpan dalam RAM sistem. Terlepas dari ruang penyimpanan, mereka menentukan ruang lingkup variabel. Variabel dalam program C disimpan di lokasi fisik di memori acak, yang terutama memori perangkat dan register CPU.

Kelas penyimpanan di C juga mendefinisikan masa pakai variabel dan menyebutnya sebagai 'lokal' atau 'global'. Kelas penyimpanan juga berguna untuk menentukan cakupan atau visibilitas, dan nilai awal variabel. Ada empat kelas penyimpanan di C , yaitu. otomatis , register , statis , dan eksternal . Kita akan bahas satu per satu lebih lanjut.

Bagaimana Kelas Penyimpanan Dalam C Dideklarasikan?

Empat kelas penyimpanan di C dideklarasikan dalam blok atau program dengan penentu kelas penyimpanan, auto, register, extern, static. Ada satu lagi penentu kelas penyimpanan, 'typedef' digunakan dalam bentuk sintaksis, dan tidak memesan penyimpanan. Penentu menginstruksikan kompiler untuk menyimpan variabel. Kelas penyimpanan eksternal di C memberi tahu kompiler bahwa variabel yang ditentukan dideklarasikan dengan tautan eksternal.

Ada perbedaan utama antara mendefinisikan dan mendeklarasikan variabel. Mendefinisikan variabel adalah tentang mengalokasikan memori untuk variabel dan mendeklarasikannya berarti menginisialisasi dengan nilai.

Sintaksis:

storage_class_specifier data_type variabel_name;

Baca: Ide & Topik Proyek Menarik di C# Untuk Pemula

Kasus Khusus: Ketika tidak ada penentu kelas penyimpanan yang dideklarasikan atau ditentukan dalam suatu program

Setidaknya ada satu penentu kelas penyimpanan yang diberikan dalam deklarasi variabel. Tetapi, jika tidak ada penentu kelas penyimpanan yang ditentukan, aturan berikut diikuti:

1. Variabel yang dideklarasikan dalam suatu fungsi dianggap sebagai otomatis.

2. Fungsi yang dideklarasikan dalam suatu fungsi dianggap sebagai eksternal.

3. Variabel dan fungsi yang dideklarasikan di luar fungsi dianggap statis, dengan hubungan eksternal .

Apa Jenis Kelas Penyimpanan di C?

Ada empat kelas penyimpanan di C , mari kita lihat mereka:

1. Kelas Penyimpanan Otomatis di C

Setiap variabel yang didefinisikan dalam suatu fungsi atau blok milik kelas penyimpanan otomatis secara default jika tidak ada kelas penyimpanan yang disebutkan. Variabel fungsi atau blok milik kelas penyimpanan otomatis dideklarasikan dengan penentu otomatis. Variabel di bawah auto di C adalah lokal ke blok di mana mereka didefinisikan dan dibuang di luar blok.

Program Sederhana Menampilkan Kelas Penyimpanan Otomatis:

#sertakan <stdio.h>

int utama()

{

int otomatis i = 11;

{

int otomatis i = 22;

{

int otomatis i = 33;

printf (“%d”, i);

}

printf (“%d”, i);

}

printf (“%d”, i);

}

Keluaran dari Program:

3 2 1

Penjelasan:

Pada program di atas, ada tiga kali variabel i dideklarasikan. Variabel dengan nama yang sama dapat didefinisikan dalam blok yang berbeda. Dengan demikian, program ini akan berhasil dikompilasi dan dijalankan tanpa kesalahan. Fungsi 'printf' di blok terdalam akan mencetak 3 dan variabel i di blok ini akan dimusnahkan setelah blok berakhir.

Yang berikutnya, blok luar kedua mencetak 2 yang kemudian digantikan oleh blok luar yang mencetak 1. Variabel otomatis diinisialisasi dengan benar; jika tidak, Anda akan mendapatkan nilai yang tidak ditentukan karena kompiler tidak memberi mereka nilai awal.

2. Daftarkan Kelas Penyimpanan di C

Variabel milik kelas penyimpanan register setara dengan auto di C tetapi disimpan di register CPU dan bukan di memori, oleh karena itu namanya. Merekalah yang sering diakses. Register specifier digunakan untuk mendeklarasikan variabel dari kelas penyimpanan register. Variabel dari kelas penyimpanan register adalah lokal ke blok di mana mereka didefinisikan dan dihancurkan ketika blok berakhir.

Program Sederhana Menampilkan Daftar Kelas Penyimpanan:

#sertakan <stdio.h>

int utama()

{

daftar int i = 10;

int *p = &i; //error: alamat variabel register yang diminta

printf (“Nilai i: %d”, *p);

printf (“Alamat i: %u”, p);

}

Penjelasan:

Pada program di atas, kode mencoba memasukkan alamat variabel i ke variabel pointer p tetapi karena i dideklarasikan sebagai variabel register, kode tidak akan dikompilasi dan akan menampilkan kesalahan ” Error: address of register variable request” .

Hanya jenis variabel tertentu yang ditempatkan ke dalam register. Variabel register tidak diberikan nilai awal oleh compiler.

Pelajari: C++ Vs Java: Perbedaan Antara C++ & Java

3. Kelas Penyimpanan Statis di C

Visibilitas variabel statis adalah nol di luar fungsi atau filenya, tetapi nilainya dipertahankan di antara panggilan. Variabel dengan kelas penyimpanan statis dideklarasikan dengan specifier statis. Variabel statis berada di dalam fungsi atau file. Penentu statis bekerja secara berbeda dengan variabel lokal dan global.

Program Sederhana Menampilkan Kelas Penyimpanan Statis dengan Variabel Lokal dan Global:

saya. Variabel Lokal

#sertakan <stdio.h>

batalkan staticDemo()

{

statis int saya;

{

statis int i = 1;

printf (“%d”, i);

saya++;

}

printf (“%d”, i);

saya++;

}

int utama()

{

statisDemo();

statisDemo();

}

Keluaran dari Program:

1 0

2 1

Penjelasan:

Ketika variabel lokal didefinisikan oleh specifier statis, di dalam fungsi atau blok, ruang penyimpanan permanen dibuat di kompiler. Variabel lokal statis terlihat oleh fungsi atau blok yang ditentukan dan mempertahankan nilainya di antara pemanggilan fungsi. Dalam program di atas, variabel static i didefinisikan di dua tempat dalam dua blok di dalam fungsi staticDemo(). staticDemo() disebut dua dalam fungsi utama. Dalam panggilan berikutnya, variabel statis mempertahankan nilai-nilai lama mereka dan tidak perlu diinisialisasi lagi.

ii. Variabel Global

#sertakan <stdio.h>

statis int gInt = 1;

static void staticDemo()

{

statis int saya;

printf (“%d”, i);

saya++;

printf (“%d”, globalInt);

globalInt++;

}

int utama()

{

statisDemo();

statisDemo();

}

Keluaran dari Program:

0 1

1 2

Penjelasan:

Variabel statis perlu diinisialisasi hanya sekali dalam program dan mereka dipertahankan sepanjang hidup. Mereka memiliki nilai awal default nol.

Ketika variabel atau fungsi global didefinisikan oleh specifier statis, maka variabel atau fungsi tersebut hanya diketahui oleh file di mana ia didefinisikan. Untuk variabel global, rutinitas file lain tidak dapat mengakses dan mengubah isinya karena variabel global statis memiliki hubungan internal. Dalam program di atas, variabel global statis globalInt dan fungsi statis staticDemo(), didefinisikan sebagai statis dan tidak dapat digunakan di luar file C.

4. Kelas Penyimpanan Eksternal di C

Variabel atau fungsi kelas penyimpanan eksternal dideklarasikan oleh specifier 'eksternal'. Ketika sebuah variabel dideklarasikan dengan specifier eksternal, tidak ada penyimpanan yang dialokasikan untuk variabel tersebut dan diasumsikan bahwa variabel tersebut telah didefinisikan di tempat lain dalam program. Dengan specifier eksternal, variabel tidak diinisialisasi. Alasan mengapa extern digunakan untuk menspesifikasikan suatu variabel dalam suatu program untuk mendeklarasikannya dengan external linkage.

Program Sederhana Menampilkan Kelas Penyimpanan Eksternal:

#sertakan <stdio.h>

eksternal int saya;

int utama()

{

printf (“i: %d”, i);

}

int saya = 1;

Penjelasan:

Pada program C di atas, jika extern int i dihilangkan maka akan muncul error “Undeclared identifier 'i' karena variabel i didefinisikan setelah digunakan di printf. Specifier eksternal menginstruksikan compiler bahwa variabel i telah didefinisikan dan dideklarasikan di sini.

Jika Anda mengubah extern int i; ke int luar i = 5; Anda akan mendapatkan kesalahan "Redefinisi 'i'" karena penentu eksternal tidak menginisialisasi variabel.

Baca Juga: 7 Ide Proyek Menarik di C Untuk Pemula

Kata-kata Terakhir

Artikel ini merinci konsep kelas penyimpanan di C dan memberi tahu Anda bagaimana jenisnya berbeda satu sama lain. Kapan harus menggunakan kelas penyimpanan tertentu bergantung pada tugas dan cakupan, masa pakai, dan visibilitas variabel yang Anda hadapi.

Jika Anda tertarik untuk mempelajari lebih lanjut dan membutuhkan bimbingan dari pakar industri, lihat Diploma PG Tingkat & IIIT Banglore dalam Pengembangan Perangkat Lunak Tumpukan Penuh .

Persiapkan Karir Masa Depan

UPGRAD DAN DIPLOMA PG IIIT-BANGALORE DALAM PENGEMBANGAN PERANGKAT LUNAK FULL STACK
Daftar Hari Ini