c语言打开外部doc文件,C语言-内部函和外部函数.doc
C語言-內(nèi)部函和外部函數(shù)
8.10 內(nèi)部函數(shù)和外部函數(shù)?函數(shù)本質(zhì)上是全局的,因?yàn)橐粋€函數(shù)要被另外的函數(shù)調(diào)用,但是,也可以指定函數(shù)根據(jù)函數(shù)能否被其他源文件調(diào)用,將函數(shù)區(qū)分為內(nèi)部函數(shù)和外部函數(shù)。
8.10.1 內(nèi)部函數(shù)
如果一個函數(shù)只能被本文件中其他函數(shù)所調(diào)用,它稱為內(nèi)部函數(shù)。
在定義內(nèi)部函數(shù)時(shí),在函數(shù)名和函數(shù)類型的前面加static。即static 類型標(biāo)識符函數(shù)名(形參表)如 static int fun(int a,int b)
內(nèi)部函數(shù)又稱靜態(tài)函數(shù)。
使用內(nèi)部函數(shù),可以使函數(shù)只局限于所在文件,如果在不同的文件中有同名的內(nèi)部函數(shù),互不干擾。這樣不同的人可以分別編寫不同的函數(shù),而不必?fù)?dān)心所用函數(shù)是否會與其他文件中函數(shù)同名,通常把只能由同一文件使用的函數(shù)和外部變量放在一個文件中,在它們前面都static使之局部化,其他文件不能引用。
8.10.2外部函數(shù)
(1) 在定義函數(shù)時(shí),如果在函數(shù)首部的最左端冠以關(guān)鍵字extern,則表示此函數(shù)是外部函數(shù),可供其他文件調(diào)用。
如函數(shù)首部可以寫為extern int fun (int a, int b)這樣,函數(shù)fun就可以為其他文件調(diào)用。C語言規(guī)定,如果在定義函數(shù)時(shí)省略extern,則隱含為外部函數(shù)。本書前面所用的函數(shù)都是外部函數(shù)。
(2) 在需要調(diào)用此函數(shù)的文件中,用extern聲明所用的函數(shù)是外部函數(shù)。
例8.22有一個字符串,內(nèi)有若干個字符,今輸入一個字符,要求程序?qū)⒆址性撟址麆h去。
用外部函數(shù)實(shí)現(xiàn)。file1.c(文件1)
main() { extern enter-string(char str[80]);extern delete-strin g(char str[ ],char ch);extern print-string(char str[]); /以上3行聲明在本函數(shù)中將要調(diào)用的在其他文件中定義的3個函數(shù) char c; char str[80]; enter-string(str); scanf("%c",&c);
delete-string(str,c); print-string(str);}file2.c(文件2) #include enter-string(char str[80])/定義外部函數(shù)enter-string*/{gets(str);} /讀入字符串str*/file3.c(文件3)
delete-string(char str[],char ch) /定義外部函數(shù)delete-string { int i,j; for(i=j=0;str[i]!=′\0′;i++)if(str[i]!=ch) str[j++]=str[i]; str[j]=′\0′; }file4.c(文件4) print-string(char str[])/定義外部函數(shù)print-string/
{ printf("%s",str); } 運(yùn)行情況如下:abcdefgc(輸入str) c (輸入要刪去的字符) abdefg (輸出已刪去指定字符的字符串)整個程序由4個文件組成。每個文件包含一個函數(shù)。主函數(shù)是主控函數(shù),除聲明部分外,由4個函數(shù)調(diào)用語句組成。其中scanf是庫函數(shù),另外3個是用戶自己定義的函數(shù)。函數(shù)delete-string的作用是根據(jù)
給定的字符串str和要刪除的字符ch,對str作刪除處理。算法是這樣的:對str數(shù)組的字符逐個檢查,如果不是被刪除的字符就將它存放在數(shù)組中,見圖8.21(設(shè)刪除空格)。從str[0]開始逐個檢查數(shù)組元素值是否等于指定要刪除的字符,若不是就留在數(shù)組中,若是就不保留。從圖中可以看到,應(yīng)該使str[0]賦給str[0],str[1][1],str[2][2],str[3][3],然后str[5][4]……請讀者注意分析如何控制i和j的變化,以便使被刪除的字符不保留在原數(shù)組中。這個題目當(dāng)然可以設(shè)兩個數(shù)組,把不刪除的字符一一賦給新數(shù)組。但我們只用一個數(shù)組,只把不被刪除的字符保留下來。由于i總是大于或等于j,因此最后保留下來的字符不會覆蓋未被檢測處理的字符。最后將結(jié)束符‘\0’也復(fù)制到被保留的字符后面。
程序中3個函數(shù)都定義為外部函數(shù)。在main函數(shù)中用extern聲明在main函數(shù)中用到的enter-string、delete-string、print-string是在其他文件中定義的外部函數(shù)。通過此例可知:使用extern聲明就能夠在一個文件中調(diào)用其他文件中定義的函數(shù),或者說把該函數(shù)的作用域擴(kuò)展到本文件。extern聲明
總結(jié)
以上是生活随笔為你收集整理的c语言打开外部doc文件,C语言-内部函和外部函数.doc的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2023年中国科技与IT十大趋势公布:A
- 下一篇: vivo X Fold2真机亮相:经典华