Fungsi Statik dalam Bahasa Komputer C

Fungsi Statik Dalam Bahasa Komputer C



'statik' ialah perkataan terpelihara dalam bahasa komputer, C. Ia adalah penentu kelas storan yang boleh digunakan dengan fungsi. Program C boleh mempunyai lebih daripada satu fail. Hanya satu daripada fail harus mempunyai fungsi C main(). Dalam artikel ini hanya dua fail dipertimbangkan: fail dengan fungsi C main() yang dipanggil mainFile.c dan fail lain tanpa fungsi utama yang dipanggil otherFile.c

Fungsi Global

Fungsi global ialah fungsi yang ditakrifkan dalam fail C sebelum fungsi main(). Malah fungsi main() ialah fungsi global tetapi fungsi main() bukan fokus dalam artikel ini. Dalam bahasa C, fungsi yang ditentukan pengaturcara biasanya merupakan fungsi global dan hanya dirujuk sebagai fungsi.

Fungsi global boleh dipanggil dalam mana-mana skop dalam failnya. Untuk membolehkan fungsi global dilihat dalam fail yang berbeza, prototaipnya perlu diisytiharkan dalam fail berbeza itu (lihat di bawah.) Untuk mengelakkan fungsi yang ditakrifkan dalam satu fail daripada dilihat dalam fail yang berbeza, dahului definisi dengan perkataan terpelihara, statik. Dengan itu, fungsi statik akan menjadi fungsi global hanya dalam failnya sendiri dan tidak akan dilihat dalam fail lain.







Jadi, fungsi global yang ditakrifkan dalam otherFile.c boleh dilihat di mana-mana sahaja dalam otherFile.c. Untuk dapat dilihat dalam mainFile.c, prototaipnya perlu diisytiharkan dalam mainFile.c (lihat di bawah.) Takrifannya dalam otherFile.c tidak boleh didahului dengan 'statik'. Untuk mengelakkannya daripada dilihat dalam mainFile.c, takrifannya dalam otherFile.c perlu dibuat statik dialih keluar koma dengan mendahuluinya dengan perkataan, statik.



Artikel ini menggambarkan fungsi statik dalam bahasa komputer, C bermula dengan maksud prototaip fungsi dan penggunaannya dalam atur cara C dua atau lebih fail.



Penyusunan fail, mainFile.c dan otherFile.c, boleh dilakukan dengan perintah terminal Bash berikut:





gcc mainFile. c Fail lain. c - temp itu. exe

temp.exe ialah nama fail pelaksana tunggal yang terhasil.

Kandungan Artikel



– Pengenalan – lihat di atas

– Prototaip Fungsi C

– Fungsi Global

– Fungsi Statik Betul

– Kesimpulan

Prototaip Fungsi C

Pertimbangkan definisi fungsi global:

char * fn1 ( char * stri ) {
kembali stri ;
}

Prototaip untuk fungsi ini ialah:

char * fn1 ( char * stri ) ;

Ia adalah tandatangan fungsi, berakhir dengan koma bertitik.

Sekarang, biarkan kandungan otherFile.c ialah:

char * fn1 ( char * stri ) {

kembali stri ;

}

Andaikan bahawa fail, otherFile.c hanya mempunyai takrifan fungsi global, fn1(). Sekarang biarkan kandungan fail, mainFile.c, menjadi:

#include

char * fn1 ( char * stri ) ;

int utama ( )
{
char * str = fn1 ( 'terlihat' ) ;
printf ( '%s \n ' , str ) ;

kembali 0 ;
}

Ia bermula dengan kemasukan pengepala (perpustakaan). Ini diikuti dengan pengisytiharan prototaip fungsi, fn() fail lain.

Fail utama ini tidak mempunyai takrifan mana-mana fungsi global selain daripada fungsi main() lalai. Dalam fungsi utama, pernyataan pertama memanggil fungsi fn1() yang ditakrifkan dalam fail lain. Panggilan ini tidak akan berkesan jika prototaip fn1() tidak diisytiharkan dalam fail ini, mainFile.c.

Jika pembaca telah mengekodkan dua fail di atas, maka dia boleh menyusun atur cara menjadi satu fail boleh laku dengan arahan berikut:

gcc mainFile. c Fail lain. c - temp itu. exe

menekan kekunci Enter di hujung baris. Output sepatutnya, 'dilihat'.

Fungsi Global

Fail mainFile.c boleh diubah suai seperti berikut:

#include

char * fn1 ( char * stri ) ;

char * fn ( char * st ) {
kembali st ;
}

int utama ( )
{
char * str1 = fn1 ( 'terlihat' ) ;
printf ( '%s \n ' , str1 ) ;
char * str2 = fn ( 'Global dilihat dalam failnya.' ) ;
printf ( '%s \n ' , str2 ) ;
kembali 0 ;
}

Kini, terdapat dua fungsi global dalam fail, mainFile.c. Nama fungsi ialah fn() dan main(). dfn() ialah fungsi global. Ia telah dilihat dalam skop tempatan fungsi main() dengan panggilan. Dalam bahasa C, fungsi global dalam skop global, seperti fn(), hanya dirujuk sebagai fungsi. Selain itu, fungsi global, fn1() dalam fail, otherFile.c hanya dirujuk sebagai fungsi.

Jika kedua-dua fail itu disusun semula ke dalam temp.exe, maka keluarnya ialah:

dilihat

Global dilihat dalam failnya.

Nota: definisi fungsi untuk fn() juga boleh dibuat untuk dilihat dalam fail lain, otherFile.c. Untuk mencapainya mempunyai pengisytiharan prototaipnya dalam otherFile.c, seperti berikut:

char * fn ( char * st ) ;

berakhir dengan koma bertitik. Aktiviti ini, ditinggalkan sebagai latihan kepada pembaca.

Fungsi Statik Betul

Daripada perbincangan di atas, fungsi boleh dilihat dalam mana-mana skop (di mana-mana) dalam failnya. Ia juga boleh dilihat dalam fail yang berbeza, untuk program yang sama, jika prototaipnya diisytiharkan di sana. Untuk mengelakkan definisi fail daripada dilihat dalam fail yang berbeza, jadikan definisi statik dengan mendahuluinya dengan perkataan terpelihara, statik. Walaupun prototaipnya diisytiharkan dalam fail yang berbeza, ia masih tidak akan dilihat dalam fail yang berbeza. Fail program tidak akan disusun. Untuk menggambarkan ini, biarkan kandungan fail, otherFile.c ialah:

statik char * fn1 ( char * stri ) {

kembali stri ;

}

Ini adalah kandungan yang sama dalam fail, otherFile.c, seperti sebelum ini, tetapi dengan perkataan terpelihara sebelumnya, statik. Kandungan fail mainFile.c, kekal sama. Jika percubaan dibuat untuk menyusun fail program dengan arahan,

gcc mainFile. c Fail lain. c - temp itu. exe

pengkompil akan mengeluarkan mesej ralat, bermakna program tidak menyusun. Walaupun pengisytiharan prototaip dalam fail yang berbeza, juga didahului dengan statik, fail program masih tidak akan disusun.

Kesimpulan

Definisi fungsi dalam bahasa C, ialah fungsi global. Fungsi ini boleh dipanggil (dilihat) dalam mana-mana skop dalam failnya. Untuk membolehkan fungsi ini dilihat dalam fail yang berbeza, seperti fail utama, pengisytiharan prototaipnya perlu ditaip dalam fail yang berbeza itu. Untuk mengelakkan fungsi ini daripada dilihat dalam fail yang berbeza, jadikan takrifannya statik dengan mendahuluinya dengan perkataan terpelihara, statik.