Apakah Kelas Penyimpanan di C ++ dan jenisnya?



Dalam blog kelas storan ini, kita akan melihat pelbagai kelas storan yang digunakan dalam C ++ seperti auto, register, static, extern dan mutable dengan contoh.

Kelas simpanan di C ++ mentakrifkan jangka hayat & keterlihatan pemboleh ubah / fungsi. Sepanjang hayat adalah tempoh sehingga pemboleh ubah tetap aktif & keterlihatan adalah kebolehcapaian pemboleh ubah dari modul yang berbeza dari program. Ini membantu mengesan kewujudan pemboleh ubah tertentu semasa menjalankan program. Dalam blog kelas storan ini, kita akan melihat pelbagai kelas storan yang digunakan dalam C ++.

Mari kita mulakan.





Apakah Kelas Penyimpanan Di C ++?

Setiap pemboleh ubah dalam C ++ mempunyai jenis data dan kelas penyimpanan. Jenis data menentukan jenis data yang dapat disimpan dalam pemboleh ubah seperti int, float, char dll. Kelas penyimpanan mengawal dua sifat berbeza dari satu pemboleh ubah: jangka hayat dan skop.

Anda mungkin akan melihat setiap pemboleh ubah mempunyai jenis data, tetapi anda mungkin belum pernah melihat kelas penyimpanan yang dilampirkan pada pemboleh ubah setakat ini. Sebenarnya, jika anda tidak menentukan kelas storan, penyusun secara automatik memberikan kelas storan lalai kepadanya. Kelas penyimpanan pemboleh ubah memberikan maklumat mengenai lokasi penyimpanan pemboleh ubah dalam memori, nilai awal lalai, ruang lingkup pemboleh ubah dan jangka hayatnya.



Jenis Kelas Penyimpanan

Terdapat lima kelas simpanan dalam Program C ++:

  • kereta
  • daftar
  • statik
  • luaran
  • boleh berubah

Mari kita bincangkan setiap kelas simpanan secara terperinci.

Kelas Penyimpanan Auto

Kelas penyimpanan automatik (automatik) adalah kelas penyimpanan lalai untuk semua pemboleh ubah tempatan, yang dinyatakan dalam fungsi atau blok. Kata kunci automatik jarang digunakan semasa menulis a Program C ++ .



Skop pemboleh ubah automatik berada dalam fungsi atau blok di mana mereka telah dinyatakan & tidak dapat diakses di luar fungsi atau blok tersebut. Ia juga dapat diakses dalam blok bersarang dalam blok / fungsi induk di mana pemboleh ubah automatik dinyatakan.

Anda boleh mengakses pemboleh ubah automatik di luar skopnya menggunakan pemboleh ubah penunjuk. Anda perlu menunjukkan lokasi memori yang sama di mana pemboleh ubah berada.

Jangka hayatnya sama dengan jangka hayat fungsi. Setelah pelaksanaan fungsi selesai, pemboleh ubah dimusnahkan.

Secara lalai, nilai sampah diberikan kepada mereka semasa pengisytiharan.

Sintaks:

jenis data var_name1 [= nilai]

atau

jenis data automatik var_name1 [= nilai]

Dalam contoh di atas, dua pemboleh ubah ditentukan dengan kelas storan yang sama. Auto hanya dapat digunakan untuk menentukan pemboleh ubah tempatan iaitu dalam fungsi.

Daftar Kelas Penyimpanan

Seperti namanya, kelas penyimpanan daftar digunakan untuk menyatakan pemboleh ubah daftar. Semua fungsi variabel register adalah sama dengan pemboleh ubah automatik kecuali bahawa penyusun cuba menyimpan pemboleh ubah ini dalam daftar mikropemproses jika daftar percuma tersedia. Sekiranya daftar percuma tidak tersedia, ini kemudian disimpan dalam memori sahaja.

Oleh itu, operasi pada pemboleh ubah daftar jauh lebih pantas daripada pemboleh ubah lain yang disimpan di dalam memori semasa masa program dijalankan.

Secara amnya, beberapa pemboleh ubah yang perlu sering diakses dalam program dinyatakan dalam kelas penyimpanan daftar untuk meningkatkan masa berjalan program. Alamat pemboleh ubah daftar tidak dapat diperoleh menggunakan petunjuk.

Ukuran maksimum pemboleh ubah adalah sama dengan ukuran daftar (iaitu kira-kira satu perkataan). Pengendali ‘&’ tidak boleh digunakan kerana ia tidak mempunyai lokasi memori.

Sintaks:

daftar jenis data var_name1 [= nilai]

Contoh:

adalah array objek dalam java
{daftar int pi}

Mendefinisikan 'register' tidak bermaksud bahawa pemboleh ubah akan disimpan dalam daftar. Ini mungkin disimpan dalam daftar bergantung pada perkakasan dan sekatan pelaksanaan.

Mari kita lihat contoh kelas daftar & penyimpanan automatik.

Contoh:

#include menggunakan namespace std // menyatakan pemboleh ubah yang akan dibuat extern // nilai intial juga dapat diinisialisasi menjadi x int x void autoStorageClass () {printf ('nDemonstrating auto classnn') // menyatakan pemboleh ubah automatik (hanya // menulis 'int a = 32' berfungsi juga) int num = 32 // mencetak pemboleh ubah automatik 'a' printf ('Nilai pemboleh ubah' num '' 'dinyatakan sebagai automatik:% dn', num) printf ( '--------------------------------')} batal registerStorageClass () {printf ('nDemonstrating register classnn') / / menyatakan daftar daftar pemboleh ubah char c = 'G' // mencetak pemboleh ubah daftar 'b' printf ('Nilai pemboleh ubah' c '' dinyatakan sebagai daftar:% dn ', c) printf (' ---- ---------------------------- ')} int main () {// Untuk menunjukkan Kelas Penyimpanan automatik autoStorageClass () // Untuk menunjukkan daftar Storage Class registerStorageClass () return 0}

Pengeluaran:

Keluaran - Kelas penyimpanan di C ++ - EdurekaKelas Penyimpanan Statik

Kelas storan statik digunakan untuk menyatakan pemboleh ubah statik . Pemboleh ubah statik mengekalkan nilai mereka (iaitu nilai terakhir) walaupun berada di luar ruang lingkupnya. Pemboleh ubah statik hanya dimulakan sekali &wujud sehingga penamatan program.

Memori diperuntukkan hanya sekali kepada pemboleh ubah statik & tidak ada memori baru yang diperuntukkan kerana tidak diisytiharkan semula. Pemboleh ubah statik global boleh diakses di mana sahaja dalam program ini. Secara lalai, mereka diberi nilai 0 oleh penyusun.

Dalam C ++, apabila statik digunakan pada anggota data kelas, ia menyebabkan hanya satu salinan anggota tersebut yang akan dikongsi oleh semua objek kelasnya.

Sintaks:

jenis data statik var_name1 [= nilai]

Contoh:

#include void function (void) static int c = 5 // Pemboleh ubah statik global utama () {while (c--) {function ()} return 0} void function (void) {static int cnt = 2 cnt ++ std :: cout<< 'cnt is ' << cnt std::cout << ' and c is ' << c << std::endl } 

Pengeluaran:

Kelas Penyimpanan Luaran

Kelas storan luaran diperlukan apabila pemboleh ubah perlu dikongsi di beberapa fail. Pemboleh ubah luaran mempunyai skop global dan pemboleh ubah ini dapat dilihat di luar fail di mana ia diisytiharkan. Pemboleh ubah luaran dapat dilihat oleh semua program. Ia digunakan jika dua atau lebih fail berkongsi pemboleh ubah atau fungsi yang sama.

Jangka hayat pemboleh ubah luaran adalah selagi program di mana ia dinyatakan diakhiri. Pemboleh ubah global yang normal dapat dibuat eksternal juga dengan meletakkan kata kunci 'extern' sebelum deklarasi / definisi dalam fungsi / blok apa pun.

Apabila anda menggunakan 'extern' pemboleh ubah tidak dapat diinisialisasi kerana semua yang dilakukan adalah menunjukkan nama pemboleh ubah di lokasi penyimpanan yang telah ditentukan sebelumnya.

Sintaks

jenis data luaran var_name1

Contohnya

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

Fail Kedua: support.cpp

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

Di sini, kata kunci luaran digunakan untuk menyatakan cnt dalam fail lain. Sekarang susun dua fail ini seperti berikut & tolak

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

program senarai berangkai di c

Ini akan menghasilkan program boleh laku tulis, cuba jalankan menulis dan periksa hasilnya seperti berikut & tolak

$. / tulis

5

Melangkah maju dengan kelas storan di C ++, mari kita lihat yang terakhir, iaitu kelas storan yang boleh diubah.

Kelas Penyimpanan Mutable

Penentu yang boleh diubah hanya berlaku untuk objek kelas, yang memungkinkan anggota objek untuk mengatasi fungsi anggota const. Artinya, anggota yang dapat diubah dapat diubah dengan fungsi anggota const.

Akhirnya, mari kita lihat jadual perbandingan untuk memahami perbezaan antara kelas storan yang berbeza.

Kelas Penyimpanan

Kata kunci

Seumur hidup

Penglihatan

Nilai Permulaan

Automatik

kereta

Blok Fungsi

Tempatan

Sampah

Luaran

luaran

cara menukar dua kali ganda ke int

Keseluruhan Program

Global

Sifar

Statik

statik

Keseluruhan Program

Tempatan

Sifar

Daftar

daftar

Blok Fungsi

Tempatan

Sampah

Boleh diubah

boleh berubah

Kelas

Tempatan

Sampah

Sekarang setelah melalui program C ++ di atas, anda akan memahami apakah kelas penyimpanan yang berbeza di C ++ & bagaimana melaksanakannya. Saya harap blog ini memberi maklumat dan nilai tambah kepada anda.

Oleh itu, kita telah mengakhiri artikel ini mengenai ‘Kelas penyimpanan di C ++’.

Sekiranya anda ingin mengetahui lebih lanjut, lihat di oleh Edureka, sebuah syarikat pembelajaran dalam talian yang dipercayai. Kursus latihan dan pensijilan Java J2EE dan SOA Edureka dirancang untuk melatih anda untuk konsep Java teras dan maju bersama dengan pelbagai kerangka kerja Java seperti Hibernate & Spring.

Ada soalan untuk kami? Sila sebutkan di bahagian komen blog ini dan kami akan menghubungi anda secepat mungkin.