Statik dalam Pengaturcaraan C

Static C Programming



Dalam tutorial ini, kami akan menerangkan kata kunci statik dengan menerapkannya dalam pemboleh ubah dan fungsi. Static adalah kata kunci yang digunakan dalam pengaturcaraan C, dan dapat diterapkan dengan menggunakan sintaks berikut:

{data type} static} nama statik







Pemboleh ubah tempatan statik

Apabila pemboleh ubah dalam fungsi statik, pemboleh ubah mengekalkan nilainya antara fungsi panggilan.



//Contoh1.c

#sertakan

intkeseronokan1()
{

intmengira=0;
mengira++;
kembalimengira;
}

intseronok2()
{
statik intmengira=0;
mengira++;
kembalimengira;
}

intutama()
{
printf ('fun1 1st call return:% d n',keseronokan1());
printf ('fun1 Panggilan panggilan ke-2:% d n n',keseronokan1());

printf ('fun2 pemulangan panggilan pertama:% d n',seronok2());
printf ('fun2 pemulangan panggilan ke-2:% d n',seronok2());

kembali 0;
}


Dalam Contoh 1.c, kita mempunyai dua fungsi: keseronokan1 () dan seronok2 () . Dalam keseronokan1 () , kita menyatakan satu pemboleh ubah (hitungan) dan menginisialisasi menjadi 0. Kemudian, kita menambah pemboleh ubah kiraan dan mengembalikan nilai yang dihasilkan. Menggunakan utama () , kami panggil keseronokan1 () dua kali, dan setiap kali, nilai 1 dikembalikan kerana pemboleh ubah kiraan dihapus ketika panggilan ke keseronokan1 () sudah selesai. Dalam seronok2 () kami menyatakan pemboleh ubah kiraan sebagai pemboleh ubah statik. Oleh itu, nilainya terpelihara. Menggunakan utama () , kami panggil seronok2 () dua kali: kali pertama, nilai 1 dikembalikan, dan kali kedua, nilai 2 dikembalikan.



Pemboleh ubah global statik

Pemboleh ubah global statik berkelakuan sama seperti pemboleh ubah global lain, tetapi tidak dapat diakses dari program C yang lain.





Fungsi statik

Dalam C, fungsi secara global secara lalai. Namun, jika kita menyatakan fungsi statis, maka fungsi tersebut bersifat lokal dan tidak dapat diakses dari program C yang lain.

Permulaan pemboleh ubah statik

Sekiranya pemboleh ubah statik tidak diinisialisasi secara eksplisit, maka pemboleh ubah diinisialisasi sebagai 0.



//Contoh2.c

#sertakan

intutama()
{
statik inti;

printf (Nilai i:% d n',i);

kembali 0;
}


Dalam Contoh2.c, kami menyatakan pemboleh ubah statik i yang tidak diinisialisasi. Namun, kerana pemboleh ubah itu statik, ia secara automatik diinisialisasi menjadi 0.

Penting untuk diperhatikan bahawa pemboleh ubah statik mesti dimulakan dengan literal tetap; kita tidak boleh menggunakan nilai kembali fungsi untuk memulakan pemboleh ubah statik.

//Contoh3.c

#sertakan

intkeseronokan1()
{
kembali 5;
}

intutama()
{
statik inti=keseronokan1();
printf (Nilai i:% d n',i);
kembali 0;
}


Dalam Contoh3.c, kami cuba menginisialisasi pemboleh ubah statik dengan menggunakan nilai kembali keseronokan1 () . Namun, seperti yang anda lihat, ralat dikembalikan semasa kod disusun.

Ringkasan

Jangka hayat pemboleh ubah statik dan jangka hayat program adalah sama.

Sekiranya pemboleh ubah statik tidak diinisialisasi, maka ia akan menggunakan nilai lalai 0.

Baik pemboleh ubah statik global atau fungsi statik dapat diakses dari program selain daripada yang ditentukan.