?? 王大剛--c語言編程寶典--函數.htm
字號:
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<!-- saved from url=(0054)http://www.cnread.net/cnread1/dnwl/cxsj/c/cyyb/018.htm -->
<HTML><HEAD><TITLE>王大剛-->C語言編程寶典-->函數</TITLE>
<META http-equiv=Content-Type content="text/html; charset=GB2312">
<META content="王大剛 C語言編程寶典 函數" name=keywords>
<META content="王大剛 - C語言編程寶典 - 函數" name=description>
<STYLE>#page {
LEFT: 0px; POSITION: absolute; TOP: 0px
}
.tt3 {
FONT: 9pt/12pt "宋體"
}
.tt2 {
FONT: 12pt/15pt "宋體"
}
A {
TEXT-DECORATION: none
}
A:hover {
COLOR: blue; TEXT-DECORATION: underline
}
</STYLE>
<META content="MSHTML 6.00.2800.1106" name=GENERATOR></HEAD>
<BODY text=#000000 vLink=#006699 aLink=#9900ff link=#006699 bgColor=#ffffff
leftMargin=3 topMargin=3 marginwidth="3" marginheight="3">
<TABLE cellSpacing=0 cellPadding=10 width="100%" border=0>
<TBODY>
<TR>
<TD class=tt3 vAlign=top width="8%" bgColor=#e0e0e0><STRONG><A
href="http://www.cnread.net/cnread1/dnwl/cxsj/c/cyyb/019.htm">后一頁</A><BR><A
href="http://www.cnread.net/cnread1/dnwl/cxsj/c/cyyb/017.htm">前一頁</A><BR><A
href="http://www.cnread.net/cnread1/dnwl/cxsj/c/cyyb/index.html">回目錄</A><BR><A
href="http://www.cnread.net/cnread1/index.htm">回首頁</A><BR></STRONG></TD>
<TD class=tt2 width="84%" bgColor=#f5f8f8>
<CENTER><B><FONT style="FONT-SIZE: 16.5pt" face=楷體_GB2312
color=#ff6666>函數</FONT></B></CENTER>
<HR width="94%" color=#ee9b73 SIZE=1>
<BR>
<P> C程序是由一組或是變量或是函數的外部對象組成的。 函數是一個自我包含的
<BR>完成一定相關功能的執行代碼段。我們可以把函數看成一個"黑盒子", 你只要將數 <BR>據送進去就能得到結果, 而函數內部究竟是如何工作的的,
外部程序是不知道的。 <BR>外部程序所知道的僅限于輸入給函數什么以及函數輸出什么。函數提供了編制程序 <BR>的手段,
使之容易讀、寫、理解、排除錯誤、修改和維護。 <BR> C程序中函數的數目實際上是不限的,
如果說有什么限制的話, 那就是, 一個C <BR>程序中必須至少有一個函數, 而且其中必須有一個并且僅有一個以main為名, 這個
<BR>函數稱為主函數, 整個程序從這個主函數開始執行。 <BR> C
語言程序鼓勵和提倡人們把一個大問題劃分成一個個子問題, 對應于解決一 <BR>個子問題編制一個函數, 因此, C
語言程序一般是由大量的小函數而不是由少量大 <BR>函數構成的, 即所謂"小函數構成大程序"。這樣的好處是讓各部分相互充分獨立,
<BR>并且任務單一。因而這些充分獨立的小模塊也可以作為一種固定規格的小"構件", <BR>用來構成新的大程序。
<BR> C語言的一個主要特點是可以建立庫函數。Turbo C2.0提供的運行程序庫有400 <BR>多個函數,
每個函數都完成一定的功能, 可由用戶隨意調用。這些函數總的分為輸 <BR>入輸出函數、數學函數、字符串和內存函數、與BIOS和DOS有關的函數、
字符屏幕 <BR>和圖形功能函數、過程控制函數、目錄函數等。對這些庫函數應熟悉其功能, 只有 <BR>這樣才可省去很多不必要的工作。
<BR> 本教程后半部分專門介紹Turbo C2.0的庫函數, 并對每個函數都給出例程, 讀
<BR>者可以將自已需要的部分以塊的方式定義, 然后將此塊寫入文件, 這樣就可以在進 <BR>入Turbo C2.0集成開發環境后,
直接調用此程序, 連接, 運行, 觀察結果, 以加深 <BR>對該函數的理解。 <BR> 用戶編制Turbo
C語言源程序, 就是利用Turbo C的庫函數。可以把所有使用的 <BR>庫函數放在一個龐大的主函數里, 也可以按不同功能設計成一個個用戶函數而被其
<BR>它函數調用。Turbo C2.0建議用戶使用后者, 當用戶編制了一些較常用的函數時, <BR>只要將其存在函數庫里,
在以后的編程中可被方便的調用而不需要再去編譯它們。 <BR>連接時將會自動從相應的庫中裝配成所需程序。 <BR>
<P> 1. 函數的說明與定義 <BR> Turbo
C2.0中所有函數與變量一樣在使用之前必須說明。所謂說明是指說明函 <BR>數是什么類型的函數,
一般庫函數的說明都包含在相應的頭文件<*.h>中, 例如標 <BR>準輸入輸出函數包含在stdio.h中,
非標準輸入輸出函數包含在io.h中, 以后在使 <BR>用庫函數時必須先知道該函數包含在什么樣的頭文件中,
在程序的開頭用#include <BR><*.h>或#include"*.h"說明。只有這樣程序在編譯, 連接時Turbo C
才知道它是提 <BR>供的庫函數, 否則, 將認為是用戶自己編寫的函數而不能裝配。 <BR>
<P> 1.1 函數說明 <BR>
<P> 1. 經典方式
<BR> 其形式為:
函數類型 函數名(); <BR> 2. ANSI 規定方式
<BR> 其形式為:
函數類型 函數名(數據類型 形式參數, 數據類型 形式
<BR>
參數, ......); <BR> 其中: 函數類型是該函數返回值的數據類型, 可以是以前介紹的整型(int),
<BR>長整型(long), 字符型(char), 單浮點型(float), 雙浮點型(double)以及無值型 <BR>(void),
也可以是指針, 包括結構指針。無值型表示函數沒有返回值。 <BR> 函數名為Turbo C2.0的標識符,
小括號中的內容為該函數的形式參數說明。可 <BR>以只有數據類型而沒有形式參數, 也可以兩者都有。對于經典的函數說明沒有參數 <BR>信息。如:
<BR> int putlll(int x,int y,int z,int color,char
*p)/*說明一個整型函數*/ <BR> char
*name(void);
/*說明一個字符串指什函數*/ <BR> void student(int n, char
*str); /*說明一個不返回值的函數*/ <BR> float
calculate();
/*說明一個浮點型函數*/ <BR> 注意: 如果一個函數沒有說明就被調用, 編譯程序并不認為出錯, 而將此函數
<BR>默認為整型(int)函數。因此當一個函數返回其它類型, 又沒有事先說明, 編譯時 <BR>將會出錯。 <BR>
<P> 1.2 函數定義 <BR> <BR>
函數定義就是確定該函數完成什么功能以及怎么運行, 相當于其它語言的一個 <BR>子程序。Turbo C2.0對函數的定義采用ANSI規定的方式。即:
<BR> 函數類型 函數名(數據類型形式參數; 數據類型
形式參數...) <BR> {
<BR> 函數體;
<BR> } <BR>
其中函數類型和形式參數的數據類型為Turbo C2.0的基本數據類型。函數體為 <BR>Turbo
C2.0提供的庫函數和語句以及其它用戶自定義函數調用語句的組合, 并包括 <BR>在一對花括號"{"和"}"中。
<BR> 需要指出的是一個程序必須有一個主函數, 其它用戶定義的子函數可以是任意 <BR>多個,
這些函數的位置也沒有什么限制, 可以在main()函數前, 也可以在其后。 <BR>Turbo
C2.0將所有函數都被認為是全局性的。而且是外部的, 即可以被另一個文件 <BR>中的任何一個函數調用。 <BR>
<P> 2 函數的調用 <BR>
<P> 2.1 函數的簡單調用 <BR> Turbo
C2.0調用函數時直接使用函數名和實參的方法, 也就是將要賦給被調用 <BR>函數的參量, 按該函數說明的參數形式傳遞過去, 然后進入子函數運行,
運行結束 <BR>后再按子函數規定的數據類型返回一個值給調用函數。使用Turbo C2.0的庫函數就 <BR>是函數簡單調用的方法。舉例說明如下:
<BR> 例1: <BR>
#include<stdio.h> <BR> int maxmum(int x, int
y, int z); /*說明一個用戶自定義函數*/ <BR> int
main() <BR> {
<BR> int i, j, k;
<BR> printf("i, j,
k=?\n"); <BR>
scanf("%4d%4d%4d", &i, &j, &k);
<BR> maxmum(i, j,
k); <BR> getch();
<BR> return 0;
<BR> } <BR> <BR>
maxmum(int x, int y, int z) <BR> {
<BR> int max;
<BR> max=x>y?x:y;
<BR>
max=max>z?max:z;
<BR> printf("The
maxmum value of the 3 data is %d\n", max); <BR> }
<BR>
<P> 2.2 函數參數傳遞 <BR> <BR>
一、調用函數向被調用函數以形式參數傳遞 <BR> 用戶編寫的函數一般在對其說明和定義時就規定了形式參數類型,
因此調用這 <BR>些函數時參量必須與子函數中形式參數的數據類型、順序和數量完全相同, 否則在 <BR>調用中將會出錯, 得到意想不到的結果。
<BR> 注意: <BR> 當數組作為形式參數向被調用函數傳遞時,
只傳遞數組的地址, 而不是將整個 <BR>數組元素都復制到函數中去, 即用數組名作為實參調用子函數, 調用時指向該數組
<BR>第一個元素的指針就被傳遞給子函數。因為在Turbo C2.0中, 沒有下標的數組名就
<BR>是一個指向該數組第一個元素的指針。當然數組變量的類型在兩個函數中必須相同。 <BR>
用下述方法傳遞數組形參。 <BR> 例2: <BR>
#include<stdio.h> <BR> void disp(int *n);
<BR> int main() <BR> {
?? 快捷鍵說明
復制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -