Kelas Penyimpanan di C: otomatis, eksternal, statis, kelas register di C

Daftar Isi:

Anonim

Apa itu Kelas Penyimpanan di C?

Kelas penyimpanan mewakili visibilitas dan lokasi variabel. Ini memberitahu dari bagian kode mana kita dapat mengakses variabel. Kelas penyimpanan di C digunakan untuk menjelaskan hal-hal berikut:

  • Ruang lingkup variabel.
  • Lokasi penyimpanan variabel.
  • Nilai variabel yang diinisialisasi.
  • Variabel seumur hidup.
  • Siapa yang dapat mengakses variabel?

Jadi kelas penyimpanan digunakan untuk mewakili informasi tentang variabel.

CATATAN: Variabel tidak hanya terkait dengan tipe data, nilainya tetapi juga kelas penyimpanan.

Ada empat jenis kelas penyimpanan standar. Tabel di bawah ini mewakili kelas penyimpanan di C.

Kelas penyimpanan Tujuan
mobil Ini adalah kelas penyimpanan default.
eksternal Ini adalah variabel global.
statis Ini adalah variabel lokal yang mampu mengembalikan nilai bahkan ketika kontrol dipindahkan ke pemanggilan fungsi.
daftar Ini adalah variabel yang disimpan di dalam Register.

Dalam tutorial C ini, Anda akan mempelajari berbagai jenis kelas penyimpanan di C dengan contoh-

  • Kelas Penyimpanan Otomatis di C
  • Kelas Penyimpanan Eksternal di C
    • File Pertama: main.c
    • File Kedua: original.c
  • Kelas Penyimpanan Statis di C
  • Daftarkan Kelas Penyimpanan di C

Kelas Penyimpanan Otomatis di C

Variabel yang ditentukan menggunakan kelas penyimpanan otomatis disebut sebagai variabel lokal. Auto adalah singkatan dari kelas penyimpanan otomatis. Variabel berada dalam kelas penyimpanan otomatis secara default jika tidak ditentukan secara eksplisit.

Cakupan variabel otomatis dibatasi hanya dengan blok tertentu. Setelah kontrol keluar dari blok, akses dimusnahkan. Ini berarti hanya blok di mana variabel otomatis dideklarasikan yang dapat mengaksesnya.

Kata kunci otomatis digunakan untuk menentukan kelas penyimpanan otomatis. Secara default, variabel otomatis berisi nilai sampah.

Example, auto int age;

Program di bawah ini mendefinisikan fungsi dengan memiliki dua variabel lokal

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

Kami mengambil program lain yang menunjukkan tingkat cakupan "tingkat visibilitas" untuk variabel otomatis di setiap kode blok yang secara independen 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);}

KELUARAN:

 3 2 1 

Kelas Penyimpanan Eksternal di C

Extern adalah singkatan dari kelas penyimpanan eksternal. Kelas penyimpanan eksternal digunakan ketika kita memiliki fungsi atau variabel global yang dibagi antara dua atau lebih file.

Kata kunci extern digunakan untuk mendeklarasikan variabel atau fungsi global pada file lain untuk memberikan referensi variabel atau fungsi yang telah didefinisikan pada file aslinya.

Variabel yang ditentukan menggunakan kata kunci eksternal disebut sebagai variabel global. Variabel ini dapat diakses di seluruh program. Perhatikan bahwa variabel extern tidak dapat diinisialisasi itu sudah didefinisikan dalam file asli.

Example, extern void display();

File Pertama: main.c

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

File Kedua: original.c

#include i=48;

Hasil:

 value of the external integer is = 48

Untuk mengkompilasi dan menjalankan kode di atas, ikuti langkah-langkah di bawah ini

Langkah 1) Buat proyek baru,

  1. Pilih Aplikasi Konsol
  2. Klik Go

Langkah 2) Pilih C dan klik Next

Langkah 3) Klik Berikutnya

Langkah 4) Masukkan detail dan klik Berikutnya

Langkah 5) Klik Selesai

Langkah 6) Letakkan kode utama seperti yang ditunjukkan pada program sebelumnya di file main.c dan simpan

Langkah 7) Buat file C baru [File -> baru -> File Kosong, simpan (sebagai original.c) dan tambahkan ke proyek saat ini dengan mengklik "OK" di kotak dialog.

Langkah 8) Letakkan dan simpan kode C dari file original.c yang ditunjukkan pada contoh sebelumnya tanpa fungsi main ().

Langkah 9) Bangun dan jalankan proyek Anda. Hasilnya ditunjukkan pada gambar berikutnya

Kelas Penyimpanan Statis di C

Variabel statis digunakan dalam fungsi / file sebagai variabel statis lokal. Mereka juga dapat digunakan sebagai variabel global

  • Variabel lokal statis adalah variabel lokal yang mempertahankan dan menyimpan nilainya di antara pemanggilan atau blok fungsi dan tetap terlihat hanya untuk fungsi atau blok tempat ia didefinisikan.
  • Variabel global statis adalah variabel global yang hanya terlihat oleh file yang dideklarasikan.
Example: static int count = 10;

Perlu diingat bahwa variabel statis memiliki nilai awal default nol dan hanya diinisialisasi 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);}

Hasil:

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

Variabel global dapat diakses di seluruh file sedangkan variabel statis hanya dapat diakses untuk bagian tertentu dari sebuah kode.

Umur variabel statis ada di seluruh kode program. Variabel yang dideklarasikan atau diinisialisasi menggunakan kata kunci statis selalu berisi nol sebagai nilai default.

Daftarkan Kelas Penyimpanan di C

Anda dapat menggunakan kelas penyimpanan register ketika Anda ingin menyimpan variabel lokal dalam fungsi atau blok di register CPU alih-alih RAM untuk memiliki akses cepat ke variabel ini. Misalnya, "loket" adalah calon yang baik untuk disimpan di register.

Example: register int age;

Kata kunci register digunakan untuk mendeklarasikan kelas penyimpanan register. Variabel yang dideklarasikan menggunakan kelas penyimpanan register memiliki umur sepanjang program.

Ini mirip dengan kelas penyimpanan otomatis. Variabel dibatasi pada blok tertentu. Satu-satunya perbedaan adalah bahwa variabel yang dideklarasikan menggunakan kelas penyimpanan register disimpan di dalam register CPU, bukan di memori. Register memiliki akses yang lebih cepat daripada memori utama.

Variabel yang dideklarasikan menggunakan kelas penyimpanan register tidak memiliki nilai default. Variabel ini sering dideklarasikan di awal 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*/}}

KELUARAN:

error: address of register variable 'weight' requested

Tabel berikut merangkum fitur-fitur utama dari setiap kelas penyimpanan yang umum digunakan dalam pemrograman C.

Kelas Penyimpanan Pernyataan Penyimpanan Nilai Awal Default Cakupan Seumur hidup
mobil Di dalam fungsi / blok Penyimpanan Tak terduga Di dalam fungsi / blok Di dalam fungsi / blok
daftar Di dalam fungsi / blok Register CPU Sampah Di dalam fungsi / blok Di dalam fungsi / blok
eksternal Di luar semua fungsi Penyimpanan Nol Seluruh file dan file lain yang variabelnya dideklarasikan sebagai extern runtime program
Statis (lokal) Di dalam fungsi / blok Penyimpanan Nol Di dalam fungsi / blok runtime program
Statis (global) Di luar semua fungsi Penyimpanan Nol Global runtime program

Ringkasan

Dalam tutorial ini kita telah membahas kelas penyimpanan di C, untuk menyimpulkan:

  • Kelas penyimpanan di C digunakan untuk mewakili informasi tambahan tentang variabel.
  • Kelas penyimpanan mewakili ruang lingkup dan umur variabel.
  • Ini juga memberi tahu siapa yang dapat mengakses variabel dan dari mana?
  • Auto, extern, register, static adalah empat kelas penyimpanan yang berbeda dalam program C.
  • Penentu kelas penyimpanan dalam bahasa C digunakan untuk menentukan variabel, fungsi, dan parameter.
  • auto digunakan untuk variabel lokal yang didefinisikan dalam blok atau fungsi
  • register digunakan untuk menyimpan variabel dalam register CPU bukan lokasi memori untuk akses cepat.
  • Statis digunakan untuk variabel global dan lokal. Masing-masing memiliki kasus penggunaannya dalam program C.
  • Ekstern digunakan untuk berbagi data antara file proyek C.