Kelas simpanan di C: kelas auto, extern, static, register di C

Isi kandungan:

Anonim

Apakah Kelas Penyimpanan di C?

Kelas penyimpanan mewakili keterlihatan dan lokasi pemboleh ubah. Ia memberitahu dari bahagian kod mana kita boleh mengakses pemboleh ubah. Kelas simpanan di C digunakan untuk menerangkan perkara berikut:

  • Skop pemboleh ubah.
  • Lokasi di mana pemboleh ubah akan disimpan.
  • Nilai permulaan pemboleh ubah.
  • Seumur hidup pemboleh ubah.
  • Siapa yang boleh mengakses pemboleh ubah?

Oleh itu, kelas penyimpanan digunakan untuk mewakili maklumat mengenai pemboleh ubah.

CATATAN: Pemboleh ubah tidak hanya dikaitkan dengan jenis data, nilainya tetapi juga kelas penyimpanan.

Terdapat empat jenis kelas storan standard. Jadual di bawah menunjukkan kelas penyimpanan di C.

Kelas simpanan Tujuan
kereta Ia adalah kelas simpanan lalai.
luaran Ia adalah pemboleh ubah global.
statik Ini adalah pemboleh ubah tempatan yang mampu mengembalikan nilai walaupun kawalan dipindahkan ke fungsi panggilan.
daftar Ia adalah pemboleh ubah yang disimpan di dalam Daftar.

Dalam tutorial C ini, anda akan mempelajari pelbagai jenis kelas penyimpanan di C dengan contoh-

  • Kelas Penyimpanan Auto di C
  • Kelas Penyimpanan Luaran di C
    • Fail Pertama: main.c
    • Fail Kedua: original.c
  • Kelas Penyimpanan Statik di C
  • Daftar Kelas Penyimpanan di C

Kelas Penyimpanan Auto di C

Pemboleh ubah yang ditentukan menggunakan kelas penyimpanan automatik disebut sebagai pemboleh ubah tempatan. Auto bermaksud kelas storan automatik. Pemboleh ubah berada dalam kelas storan automatik secara lalai jika tidak ditentukan secara eksplisit.

Skop pemboleh ubah automatik terhad dengan blok tertentu sahaja. Setelah kawalan keluar dari blok, akses dihancurkan. Ini bermaksud hanya blok di mana pemboleh ubah automatik yang dinyatakan dapat mengaksesnya.

Kata kunci automatik digunakan untuk menentukan kelas storan automatik. Secara lalai, pemboleh ubah automatik mengandungi nilai sampah.

Example, auto int age;

Program di bawah menentukan fungsi dengan mempunyai dua pemboleh ubah tempatan

int add(void) {int a=13;auto int b=48;return a+b;}

Kami mengambil program lain yang menunjukkan tahap skop "tahap keterlihatan" untuk pemboleh ubah automatik dalam setiap kod blok yang saling bergantung satu sama lain:

#include int main( ){auto int j = 1;{auto int j= 2;{auto int j = 3;printf ( " %d ", j);}printf ( "\t %d ",j);}printf( "%d\n", j);}

PENGELUARAN:

 3 2 1 

Kelas Penyimpanan Luaran di C

Extern bermaksud kelas simpanan luaran. Kelas penyimpanan luaran digunakan ketika kita mempunyai fungsi global atau pemboleh ubah yang dikongsi antara dua atau lebih fail.

Kata kunci extern digunakan untuk menyatakan pemboleh ubah global atau fungsi dalam fail lain untuk memberikan rujukan pemboleh ubah atau fungsi yang telah ditentukan dalam fail asli.

Pemboleh ubah yang ditentukan menggunakan kata kunci luaran disebut sebagai pemboleh ubah global. Pemboleh ubah ini boleh diakses sepanjang program. Perhatikan bahawa pemboleh ubah eksternal tidak dapat diinisialisasi, sudah ditentukan dalam fail asal.

Example, extern void display();

Fail Pertama: main.c

#include extern i;main() {printf("value of the external integer is = %d\n", i);return 0;}

Fail Kedua: original.c

#include i=48;

Keputusan:

 value of the external integer is = 48

Untuk menyusun dan menjalankan kod di atas, ikuti langkah di bawah

Langkah 1) Buat projek baru,

  1. Pilih Aplikasi Konsol
  2. Klik Pergi

Langkah 2) Pilih C dan klik Seterusnya

Langkah 3) Klik Seterusnya

Langkah 4) Masukkan butiran dan klik Seterusnya

Langkah 5) Klik Selesai

Langkah 6) Masukkan kod utama seperti yang ditunjukkan dalam program sebelumnya dalam fail main.c dan simpan

Langkah 7) Buat fail C baru [File -> new -> Empty File, simpan (seperti original.c) dan tambahkan ke projek semasa dengan mengklik "OK" di kotak dialog.

Langkah 8) Masukkan dan simpan kod C fail original.c yang ditunjukkan dalam contoh sebelumnya tanpa fungsi utama ().

Langkah 9) Bina dan jalankan projek anda. Hasilnya ditunjukkan dalam rajah seterusnya

Kelas Penyimpanan Statik di C

Pemboleh ubah statik digunakan dalam fungsi / fail sebagai pemboleh ubah statik tempatan. Mereka juga boleh digunakan sebagai pemboleh ubah global

  • Pemboleh ubah tempatan statik adalah pemboleh ubah tempatan yang mengekalkan dan menyimpan nilainya antara fungsi panggilan atau blok dan tetap dapat dilihat hanya pada fungsi atau blok di mana ia ditentukan.
  • Pemboleh ubah global statik adalah pemboleh ubah global yang hanya dapat dilihat pada fail di mana ia diisytiharkan.
Example: static int count = 10;

Perlu diingat bahawa pemboleh ubah statik mempunyai nilai awal lalai sifar dan diinisialisasi hanya sekali seumur hidupnya.

#include  /* function declaration */void next(void);static int counter = 7; /* global variable */main() {while(counter<10) {next();counter++; }return 0;}void next( void ) { /* function definition */static int iteration = 13; /* local static variable */iteration ++;printf("iteration=%d and counter= %d\n", iteration, counter);}

Keputusan:

iteration=14 and counter= 7iteration=15 and counter= 8iteration=16 and counter= 9

Pemboleh ubah global boleh diakses di seluruh fail sedangkan pemboleh ubah statik hanya dapat diakses ke bahagian tertentu kod.

Jangka hayat pemboleh ubah statik terdapat dalam keseluruhan kod program. Pemboleh ubah yang diisytiharkan atau diinisialisasi menggunakan kata kunci statik selalu mengandungi sifar sebagai nilai lalai.

Daftar Kelas Penyimpanan di C

Anda boleh menggunakan kelas penyimpanan daftar ketika anda ingin menyimpan pemboleh ubah tempatan dalam fungsi atau blok dalam daftar CPU dan bukannya RAM untuk memiliki akses cepat ke pemboleh ubah ini. Sebagai contoh, "kaunter" adalah calon yang baik untuk disimpan dalam daftar.

Example: register int age;

Daftar kata kunci digunakan untuk menyatakan kelas simpanan daftar. Pemboleh ubah yang dinyatakan menggunakan kelas simpanan daftar mempunyai jangka hayat sepanjang program.

Ia serupa dengan kelas storan automatik. Pemboleh ubah terhad kepada blok tertentu. Satu-satunya perbezaan adalah bahawa pemboleh ubah yang dinyatakan menggunakan kelas penyimpanan daftar disimpan di dalam daftar CPU dan bukannya memori. Daftar mempunyai akses lebih pantas daripada memori utama.

Pemboleh ubah yang dinyatakan menggunakan kelas simpanan daftar tidak mempunyai nilai lalai. Pemboleh ubah ini sering dinyatakan pada permulaan program.

#include  /* function declaration */main() {{register int weight;int *ptr=&weight ;/*it produces an error when the compilation occurs ,we cannot get a memory location when dealing with CPU register*/}}

PENGELUARAN:

error: address of register variable 'weight' requested

Jadual seterusnya merangkum ciri utama setiap kelas simpanan yang biasa digunakan dalam pengaturcaraan C

Kelas Penyimpanan Pengisytiharan Penyimpanan Nilai Permulaan Lalai Skop Seumur hidup
kereta Di dalam fungsi / blok Ingatan Tidak dapat diramalkan Di dalam fungsi / blok Di dalam fungsi / blok
daftar Di dalam fungsi / blok Daftar CPU Sampah Di dalam fungsi / blok Di dalam fungsi / blok
luaran Di luar semua fungsi Ingatan Sifar Seluruh fail dan fail lain di mana pemboleh ubah dinyatakan sebagai extern jangka masa program
Statik (tempatan) Di dalam fungsi / blok Ingatan Sifar Di dalam fungsi / blok jangka masa program
Statik (global) Di luar semua fungsi Ingatan Sifar Global jangka masa program

Ringkasan

Dalam tutorial ini kita telah membincangkan kelas penyimpanan di C, untuk meringkaskan:

  • Kelas penyimpanan di C digunakan untuk mewakili maklumat tambahan mengenai pemboleh ubah.
  • Kelas penyimpanan mewakili skop dan jangka hayat pemboleh ubah.
  • Ia juga memberitahu siapa yang boleh mengakses pemboleh ubah dan dari mana?
  • Auto, extern, register, static adalah empat kelas storan berbeza dalam program C.
  • Penentu kelas penyimpanan dalam bahasa C digunakan untuk menentukan pemboleh ubah, fungsi, dan parameter.
  • auto digunakan untuk pemboleh ubah tempatan yang ditentukan dalam blok atau fungsi
  • register digunakan untuk menyimpan pemboleh ubah dalam daftar CPU dan bukan lokasi memori untuk akses cepat.
  • Statik digunakan untuk pemboleh ubah global dan tempatan. Masing-masing mempunyai kes penggunaannya dalam program C.
  • Extern digunakan untuk perkongsian data antara fail projek C.