Bagikan melalui


Kelas Penyimpanan C

"Kelas penyimpanan" dari suatu variabel menentukan apakah item tersebut memiliki masa pakai "global" atau "lokal". C menyebut dua masa hidup ini "statis" dan "otomatis". Item dengan masa pakai global tersedia dan memiliki nilai selama eksekusi program. Semua fungsi memiliki masa pakai global.

Variabel otomatis, atau variabel dengan masa pakai lokal, dialokasikan penyimpanan baru setiap kali kontrol eksekusi diteruskan ke blok tempat mereka ditentukan. Ketika eksekusi kembali, variabel tidak lagi memiliki nilai yang berarti.

C menyediakan penentu kelas penyimpanan berikut:

Sintaks

storage-class-specifier:
auto
register
static
extern
typedef
__declspec (extended-decl-modifier-seq ) /* Khusus Microsoft */

Kecuali untuk __declspec, Anda hanya dapat menggunakan satu storage-class-specifier dalam declaration-specifier deklarasi. Jika spesifikasi kelas penyimpanan tidak dibuat, deklarasi di dalam blok membuat objek otomatis.

Item yang dideklarasikan dengan penentu auto atau register memiliki masa pakai lokal. Item yang dideklarasikan dengan penentu static atau extern memiliki masa pakai global.

Karena typedef dan __declspec secara semantik berbeda dari empat storage-class-specifier terminal lainnya, mereka dibahas secara terpisah. Untuk informasi spesifik tentang typedef, lihat typedef Deklarasi. Untuk informasi spesifik tentang __declspec, lihat Atribut Kelas Penyimpanan yang Diperluas.

Penempatan deklarasi variabel dan fungsi dalam file sumber juga memengaruhi kelas penyimpanan dan visibilitas. Deklarasi di luar semua definisi fungsi dikatakan muncul di "tingkat eksternal". Deklarasi dalam definisi fungsi muncul di "tingkat internal."

Arti yang tepat dari setiap penentu kelas penyimpanan bergantung pada dua faktor:

  • Apakah deklarasi muncul di tingkat eksternal atau internal

  • Apakah item yang dideklarasikan adalah variabel atau fungsi

Penentu Kelas Penyimpanan untuk Deklarasi Tingkat Eksternal dan Penentu Kelas Penyimpanan untuk Deklarasi Tingkat Internal menjelaskan storage-class-specifier terminal dalam setiap jenis deklarasi dan menjelaskan perilaku default saat storage-class-specifier dihilangkan dari variabel. Penentu Kelas Penyimpanan dengan Deklarasi Fungsi membahas penentu kelas penyimpanan yang digunakan dengan fungsi.

Lihat juga

Deklarasi dan Jenis