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