Dalam artikel ini, anda akan belajar mengenai kelas penyimpanan yang berbeza di C ++. Yaitu: tempatan, global, statik tempatan, daftar dan utas tempatan.
Setiap pemboleh ubah dalam C ++ mempunyai dua ciri: jenis dan kelas storan.
Jenis menentukan jenis data yang boleh disimpan dalam pemboleh ubah. Sebagai contoh: int
, float
, char
dan lain-lain
Dan, kelas penyimpanan mengawal dua sifat berbeza dari pemboleh ubah: jangka hayat (menentukan berapa lama pemboleh ubah boleh wujud) dan ruang lingkup (menentukan bahagian program mana yang dapat mengaksesnya).
Bergantung pada kelas penyimpanan pemboleh ubah, ia boleh dibahagikan kepada 4 jenis utama:
- Pemboleh ubah tempatan
- Pemboleh ubah global
- Pemboleh ubah tempatan statik
- Daftar Pembolehubah
- Penyimpanan Tempatan Thread
Pemboleh ubah Setempat
Pemboleh ubah yang didefinisikan di dalam fungsi (didefinisikan di dalam fungsi badan antara pendakap) disebut pemboleh ubah tempatan atau pemboleh ubah automatik.
Skopnya hanya terhad pada fungsi di mana ia ditentukan. Secara sederhana, pemboleh ubah tempatan ada dan dapat diakses hanya di dalam fungsi.
Kehidupan pemboleh ubah tempatan berakhir (Ia dimusnahkan) apabila fungsi keluar.
Contoh 1: Pemboleh ubah tempatan
#include using namespace std; void test(); int main() ( // local variable to main() int var = 5; test(); // illegal: var1 not declared inside main() var1 = 9; ) void test() ( // local variable to test() int var1; var1 = 6; // illegal: var not declared inside test() cout << var; )
Var variabel tidak boleh digunakan di dalam test()
dan var1 tidak boleh digunakan di dalam main()
fungsi.
Kata kunci auto
juga digunakan untuk menentukan pemboleh ubah tempatan sebelumnya sebagai:auto int var;
Tetapi, setelah C ++ 11 auto
mempunyai makna yang berbeza dan tidak boleh digunakan untuk menentukan pemboleh ubah tempatan.
Pembolehubah Global
Sekiranya pemboleh ubah didefinisikan di luar semua fungsi, maka ia disebut pemboleh ubah global.
Skop pemboleh ubah global adalah keseluruhan program. Ini bermaksud, Ia dapat digunakan dan diubah di mana-mana bahagian program setelah pengisytiharannya.
Begitu juga, hidupnya hanya berakhir apabila program itu berakhir.
Contoh 2: Pemboleh ubah global
#include using namespace std; // Global variable declaration int c = 12; void test(); int main() ( ++c; // Outputs 13 cout << c <
Output
13 14
In the above program, c is a global variable.
This variable is visible to both functions
main()
and test()
in the above program.
Static Local variable
Keyword
static
is used for specifying a static variable. For example:
… int main() ( static float a;… )
A static local variable exists only inside a function where it is declared (similar to a local variable) but its lifetime starts when the function is called and ends only when the program ends.
The main difference between local variable and static variable is that, the value of static variable persists the end of the program.
Example 3: Static local variable
#include using namespace std; void test() ( // var is a static variable static int var = 0; ++var; cout << var << endl; ) int main() ( test(); test(); return 0; )
Output
1 2
In the above program,
test()
function is invoked 2 times.
During the first call, variable var is declared as static variable and initialized to 0. Then 1 is added to var which is displayed in the screen.
When the function test() returns, variable var still exists because it is a static variable.
During second function call, no new variable var is created. The same var is increased by 1 and then displayed to the screen.
Output of above program if
var
was not specified as static variable
1 1
Register Variable (Deprecated in C++11)
Keyword register
is used for specifying register variables.
Register variables are similar to automatic variables and exists inside a particular function only. It is supposed to be faster than the local variables.
If a program encounters a register variable, it stores the variable in processor's register rather than memory if available. This makes it faster than the local variables.
However, this keyword was deprecated in C++11 and should not be used.
Thread Local Storage
Thread-local storage is a mechanism by which variables are allocated such that there is one instance of the variable per extant thread.
Keyword thread_local
is used for this purpose.
Learn more about thread local storage.