Apa itu Kelas Penyimpanan di C ++ dan tipenya?



Di blog kelas penyimpanan ini, kita akan melihat berbagai kelas penyimpanan yang digunakan di C ++ seperti auto, register, static, extern dan mutable dengan contoh.

Kelas penyimpanan di C ++ mendefinisikan masa hidup & visibilitas variabel / fungsi. Lifetime adalah durasi hingga variabel tetap aktif & visibilitas adalah aksesibilitas variabel dari berbagai modul program. Ini membantu melacak keberadaan variabel tertentu selama runtime program. Di blog kelas penyimpanan ini, kita akan melihat berbagai kelas penyimpanan yang digunakan dalam C ++.

Mari kita mulai.





Apa itu Kelas Penyimpanan di C ++?

Setiap variabel di C ++ memiliki tipe data dan kelas penyimpanan. Tipe data menentukan tipe data yang dapat disimpan dalam variabel seperti int, float, char dll. Kelas penyimpanan mengontrol dua properti yang berbeda dari variabel: masa pakai dan cakupan.

Anda akan melihat setiap variabel memiliki tipe data, tetapi Anda mungkin belum melihat kelas penyimpanan yang dilampirkan ke variabel sejauh ini. Sebenarnya, jika Anda tidak mendefinisikan kelas penyimpanan, kompilator secara otomatis menetapkan kelas penyimpanan default untuk itu. Kelas penyimpanan variabel memberikan informasi tentang lokasi penyimpanan variabel dalam memori, nilai awal default, cakupan variabel dan masa pakainya.



Jenis Kelas Penyimpanan

Ada lima kelas penyimpanan dalam Program C ++:

  • mobil
  • daftar
  • statis
  • luar
  • yg mungkin berubah

Mari kita bahas masing-masing kelas penyimpanan secara mendetail.

Kelas Penyimpanan Otomatis

Kelas penyimpanan otomatis (otomatis) adalah kelas penyimpanan default untuk semua variabel lokal, yang dideklarasikan di dalam fungsi atau blok. Kata kunci otomatis jarang digunakan saat menulis a Program C ++ .



Ruang lingkup variabel otomatis berada di dalam fungsi atau blok tempat mereka telah dideklarasikan & tidak dapat diakses di luar fungsi atau blok itu. Itu juga dapat diakses di dalam blok bersarang di dalam blok induk / fungsi di mana variabel otomatis dideklarasikan.

Anda dapat mengakses variabel otomatis di luar cakupannya menggunakan variabel penunjuk. Anda perlu menunjuk ke lokasi memori yang sama di mana variabel berada.

Umurnya sama dengan masa pakai fungsinya. Setelah eksekusi fungsi selesai, variabel dimusnahkan.

Secara default, nilai sampah diberikan kepada mereka saat deklarasi.

Sintaksis:

datatype var_name1 [= nilai]

atau

jenis data otomatis var_name1 [= nilai]

Dalam contoh di atas, dua variabel didefinisikan dengan kelas penyimpanan yang sama. Otomatis hanya dapat digunakan untuk menentukan variabel lokal yaitu di dalam fungsi.

Daftarkan Kelas Penyimpanan

Seperti namanya, kelas penyimpanan register digunakan untuk mendeklarasikan variabel register. Semua fungsi dari variabel register sama dengan variabel auto kecuali bahwa compiler mencoba menyimpan variabel-variabel ini dalam register mikroprosesor jika register gratis tersedia. Jika register gratis tidak tersedia, ini kemudian disimpan di memori saja.

Dengan demikian, operasi pada variabel register jauh lebih cepat daripada variabel lain yang disimpan dalam memori selama runtime program.

Umumnya, beberapa variabel yang perlu sering diakses dalam suatu program dideklarasikan dalam kelas penyimpanan register untuk meningkatkan waktu berjalan program. Alamat dari variabel register tidak dapat diperoleh dengan menggunakan pointer.

Ukuran maksimum variabel sama dengan ukuran register (kira-kira satu kata). Ini tidak boleh memiliki operator '&' unary yang diterapkan karena tidak memiliki lokasi memori.

Sintaksis:

daftarkan tipe data var_name1 [= nilai]

Contoh:

nilai default untuk string di java
{register int pi}

Mendefinisikan 'register' tidak berarti bahwa variabel akan disimpan dalam register. Ini mungkin disimpan dalam register tergantung pada perangkat keras dan batasan implementasi.

Mari kita lihat contoh kelas register & penyimpanan otomatis.

Contoh:

#include using namespace std // mendeklarasikan variabel yang akan dijadikan extern // nilai awal juga dapat diinisialisasi ke x int x void autoStorageClass () {printf ('nDemonstrating auto classnn') // mendeklarasikan variabel auto (cukup // menulis 'int a = 32' juga berfungsi) int num = 32 // mencetak variabel otomatis 'a' printf ('Nilai variabel' num '' 'dideklarasikan sebagai auto:% dn', num) printf ( '--------------------------------')} void registerStorageClass () {printf ('nDemonstrating register classnn') / / mendeklarasikan variabel register register char c = 'G' // mencetak variabel register 'b' printf ('Nilai variabel' c '' 'dideklarasikan sebagai register:% dn', c) printf ('---- ---------------------------- ')} int main () {// Untuk mendemonstrasikan Auto Storage Class autoStorageClass () // Untuk mendemonstrasikan register Kelas Penyimpanan registerStorageClass () return 0}

Keluaran:

Output - Kelas penyimpanan di C ++ - EdurekaKelas Penyimpanan Statis

Kelas penyimpanan statis digunakan untuk mendeklarasikan variabel statis . Variabel statis mempertahankan nilainya (yaitu nilai terakhir) bahkan saat berada di luar cakupannya. Variabel statis diinisialisasi hanya sekali &ada sampai program dihentikan.

Memori hanya dialokasikan sekali ke variabel statis & tidak ada memori baru yang dialokasikan karena tidak dideklarasikan ulang. Variabel statis global dapat diakses di mana saja dalam program. Secara default, mereka diberi nilai 0 oleh kompilator.

Di C ++, ketika statis digunakan pada anggota data kelas, itu menyebabkan hanya satu salinan anggota itu yang akan dibagikan oleh semua objek kelasnya.

Sintaksis:

tipe data statis var_name1 [= nilai]

Contoh:

#include void function (void) static int c = 5 // Variabel statis global main () {while (c--) {function ()} kembalikan 0} fungsi void (void) {static int cnt = 2 cnt ++ std :: cout<< 'cnt is ' << cnt std::cout << ' and c is ' << c << std::endl } 

Keluaran:

Kelas Penyimpanan Eksternal

Kelas penyimpanan eksternal diperlukan saat variabel perlu dibagikan ke beberapa file. Variabel eksternal memiliki cakupan global dan variabel ini terlihat di luar file tempat mereka dideklarasikan. Variabel eksternal dapat dilihat oleh semua program. Ini digunakan jika dua atau lebih file berbagi variabel atau fungsi yang sama.

Masa pakai variabel eksternal selama program yang dideklarasikan dihentikan. Variabel global normal dapat dibuat eksternal juga dengan menempatkan kata kunci 'extern' sebelum deklarasi / definisinya di fungsi / blok apa pun.

Ketika Anda menggunakan 'extern' variabel tidak dapat diinisialisasi karena yang dilakukannya hanyalah mengarahkan nama variabel di lokasi penyimpanan yang telah ditentukan sebelumnya.

Sintaksis

tipe data eksternal var_name1

Contoh

#include int cnt extern void write_extern () main () {cnt = 5 write_extern ()}

File Kedua: support.cpp

#include extern int cnt void write_extern (void) {std :: cout<< 'Count is ' << cnt << std::endl } 

Di sini, kata kunci extern digunakan untuk mendeklarasikan cnt di file lain. Sekarang kompilasi kedua file ini sebagai berikut & minus

$ g ++ main.cpp support.cpp -o tulis

Ini akan menghasilkan program tulis yang dapat dieksekusi, coba jalankan tulis dan periksa hasilnya sebagai berikut & minus

$. / tulis

5

Melanjutkan kelas penyimpanan di C ++, mari kita lihat yang terakhir, yaitu, kelas penyimpanan yang dapat diubah.

Kelas Penyimpanan yang Dapat Diubah

Penentu bisa berubah hanya berlaku untuk objek kelas, yang memungkinkan anggota objek untuk mengganti fungsi anggota const. Artinya, anggota yang bisa berubah dapat dimodifikasi dengan fungsi anggota const.

Terakhir, mari kita lihat tabel perbandingan untuk memahami perbedaan antara berbagai kelas penyimpanan.

Kelas Penyimpanan

Kata kunci

Seumur hidup

Visibilitas

Nilai Awal

Otomatis

def __init __ (sendiri):

mobil

Blok Fungsi

Lokal

Sampah

Luar

luar

Seluruh Program

Global

Nol

Statis

statis

Seluruh Program

Lokal

Nol

Daftar

daftar

Blok Fungsi

Lokal

Kode fibonacci c ++

Sampah

Yg mungkin berubah

yg mungkin berubah

Kelas

Lokal

Sampah

Sekarang setelah melalui program C ++ di atas, Anda akan mengerti apa saja kelas penyimpanan yang berbeda di C ++ & bagaimana menerapkannya. Semoga blog ini informatif dan menjadi nilai tambah bagi Anda.

Jadi kita telah sampai pada akhir artikel ini tentang 'Kelas penyimpanan di C ++'.

Jika Anda ingin mempelajari lebih lanjut, lihat oleh Edureka, perusahaan pembelajaran online terpercaya. Kursus pelatihan dan sertifikasi Java J2EE dan SOA dari Edureka dirancang untuk melatih Anda untuk konsep inti dan lanjutan Java bersama dengan berbagai kerangka kerja Java seperti Hibernate & Spring.

Ada pertanyaan untuk kami? Harap sebutkan di bagian komentar blog ini dan kami akan menghubungi Anda kembali secepatnya.