C Academy · Pelajaran

Variabel static

Variabel lokal persisten.

Pelajaran 2 dari 413 langkah

Variabel static adalah pelajaran C Academy gratis di CoddyKit. Ini adalah pelajaran 2 dari 4. Kamu bisa membaca pelajaran lengkapnya di bawah secara gratis — lalu praktikkan langsung di browser dengan editor kode bawaan dan tutor AI 24/7. Ini adalah bagian dari jalur belajar C Academy, dan progresmu tersinkronisasi di web dan aplikasi CoddyKit. Kursus C Academy mencakup 4 pelajaran total.

Kata Kunci Statis

Variabel lokal static mempertahankan nilainya di antara pemanggilan fungsi. Masa hidupnya berlangsung selama seluruh program.

#include <stdio.h>
void f(void) {
    static int count = 0;
    count++;
    printf("count = %d\n", count);
}
int main(void) {
    f();
    f();
    f();
    return 0;
}

Diinisialisasi Sekali

Variabel statis hanya diinisialisasi pada pertama kali fungsi dijalankan. Pemanggilan berikutnya melewati proses inisialisasi.

#include <stdio.h>
void f(void) {
    static int x = 100;
    printf("x = %d\n", x);
    x += 10;
}
int main(void) {
    f();
    f();
    return 0;
}

Nol Secara Bawaan

Berbeda dari variabel auto, variabel static tanpa penginisialisasi dimulai dari 0.

#include <stdio.h>
void f(void) {
    static int n;
    printf("n = %d\n", n);
    n++;
}
int main(void) {
    f();
    f();
    return 0;
}

Menghitung Pemanggilan

Salah satu penggunaan klasiknya adalah menghitung berapa kali suatu fungsi dipanggil.

#include <stdio.h>
int nextId(void) {
    static int id = 0;
    return ++id;
}
int main(void) {
    printf("%d %d %d\n", nextId(), nextId(), nextId());
    return 0;
}

Masa Hidup Statis, Lingkup Lokal

Variabel lokal statis tetap memiliki lingkup lokal. Hanya fungsi tersebut yang dapat melihatnya, tetapi nilainya tetap ada di antara pemanggilan.

#include <stdio.h>
void tick(void) {
    static int t = 0;
    t++;
    printf("tick %d\n", t);
}
int main(void) {
    tick();
    tick();
    return 0;
}

Statis vs Otomatis

Bandingkan: penghitung auto diatur ulang pada setiap pemanggilan, sedangkan penghitung static terus terakumulasi.

#include <stdio.h>
void autoCounter(void) {
    int c = 0;
    c++;
    printf("auto: %d\n", c);
}
int main(void) {
    autoCounter();
    autoCounter();
    return 0;
}

Statis pada Lingkup Berkas

Pada lingkup berkas, static berarti keterkaitan internal: variabel tersebut hanya dapat diakses oleh berkas sumbernya.

#include <stdio.h>
static int secret = 7;
int main(void) {
    printf("secret = %d\n", secret);
    return 0;
}

Penyimpanan Tembolok dengan Statis

Variabel statis dapat menyimpan nilai yang sudah dihitung sehingga nilai tersebut hanya perlu dihitung sekali.

#include <stdio.h>
int getBase(void) {
    static int base = 0;
    if (base == 0) {
        base = 50;
        printf("computed once\n");
    }
    return base;
}
int main(void) {
    printf("%d\n", getBase());
    printf("%d\n", getBase());
    return 0;
}

Mengakumulasi Keadaan

Variabel lokal statis memungkinkan fungsi mengingat total berjalan tanpa menggunakan variabel global.

#include <stdio.h>
int addToTotal(int v) {
    static int total = 0;
    total += v;
    return total;
}
int main(void) {
    printf("%d\n", addToTotal(10));
    printf("%d\n", addToTotal(5));
    return 0;
}

Peringatan

Keadaan statis membuat fungsi bergantung pada riwayat pemanggilan, sehingga pengujiannya dapat menjadi lebih sulit. Gunakan dengan sengaja.

#include <stdio.h>
int stepNumber(void) {
    static int s = 0;
    return ++s;
}
int main(void) {
    printf("step %d\n", stepNumber());
    printf("step %d\n", stepNumber());
    return 0;
}

Menggabungkan dengan Perulangan

Variabel lokal statis di dalam isi perulangan mempertahankan nilainya sepanjang iterasi maupun pemanggilan.

#include <stdio.h>
void run(void) {
    static int seen = 0;
    for (int i = 0; i < 2; i++)
        seen++;
    printf("seen = %d\n", seen);
}
int main(void) {
    run();
    run();
    return 0;
}

Pemeriksaan Singkat

Ujilah pemahaman Anda tentang variabel static.

Ringkasan: Variabel <code>static</code>

Anda telah mempelajari variabel lokal yang bertahan.

  • Variabel lokal static hidup selama seluruh program
  • Variabel tersebut diinisialisasi sekali dan secara bawaan bernilai 0
  • Variabel tersebut tetap memiliki lingkup lokal, tetapi nilainya bertahan
  • Pada lingkup berkas, static memberikan keterkaitan internal
  • Sangat berguna untuk penghitung dan penyimpanan tembolok
Gratis untuk memulai

Belajar C dengan tutor AI — gratis

Tulis dan jalankan kode asli di browser kamu, dapatkan bantuan instan dari tutor AI 24/7, dan lanjutkan di mana kamu tinggalkan di web atau aplikasi.

Kursus
39
Pelajaran
144

Pertanyaan yang Sering Diajukan

Apakah pelajaran “Variabel static” gratis?

Ya — teks lengkap “Variabel static” gratis dibaca di sini di web. Untuk praktiknya secara interaktif (editor kode bawaan dan tutor AI 24/7) dan buka sisa kursus C Academy, upgrade ke CoddyKit PRO. Kursus C Academy mencakup 4 pelajaran total.

Apa yang akan aku pelajari di “Variabel static”?

Variabel lokal persisten. Kamu berlatih C Academy dengan kode praktik yang langsung kamu jalankan di browser, dan tutor AI 24/7 menjawab pertanyaanmu saat kamu mengerjakan pelajaran ini.

Apakah aku perlu pengalaman untuk memulai C Academy?

Tidak diperlukan pengalaman sebelumnya. C Academy di CoddyKit dirancang untuk pemula hingga pelajar tingkat lanjut, jadi kamu bisa memulai di sini atau dari awal dan belajar sesuai kecepatan kamu sendiri. Ini adalah pelajaran 2 dari 4.

Berapa lama pelajaran “Variabel static” memakan waktu?

Sebagian besar pelajaran CoddyKit memakan waktu sekitar 5–10 menit. Setiap pelajaran ringkas dan interaktif, jadi kamu membuat kemajuan stabil dan melanjutkan dari tempat kamu tinggalkan di web dan aplikasi.

Bisakah aku menulis dan menjalankan kode dalam pelajaran C Academy ini?

Ya. Setiap pelajaran C Academy menyertakan editor kode bawaan, jadi kamu menulis dan menjalankan kode nyata langsung di browser dan mendapatkan umpan balik AI instan — tidak diperlukan penyiapan lokal.

Semua pelajaran dalam kursus ini

  1. auto dan Scope Lokal
  2. Variabel static
  3. extern dan Global
  4. register dan const
← Kembali ke C Academy