函數與數組.由於時間和精力有限,故不能像譚浩強譚老那樣把C語言講的細致入微, 但我想簡單易懂的講解對初學者來說還是有很大幫助的.
函數:
幾乎所有的C語言教材都把函數部分單列一章, 可見函數在C語言中是十分重要的.當一位初學者試圖編寫一則上百行的程序時, 他會很快就被數不清的變量搞得暈頭轉向, 再看各條語句的邏輯關系, 恐怕連自己也看不懂了吧, 更不用說別人讀你的程序了. 這時你所需要的就是把一個較大的程序分為若干個程序模塊, 每一個模塊實現一個特定的功能. 所有函數都是平行的, 即在定義函數時是互相獨立的, 一個函數並不從屬於另一個函數, 即函數不能嵌套定義. 就是這樣一個一個平行關系的小模塊, 將一個復雜的程序分生了多個簡單的小程序. 這樣做可以使程序的條理更加的清晰, 不僅方便了程序員的工作, 也便於其他人對程序的閱讀.
從用戶使用的角度看,函數有兩種(以下援引譚老的話,不好意思,畢竟譚老的經驗要更豐富嘛^0^):
(1).標准函數, 即庫函數. 這是由系統提供的, 用戶不必自己定義這些函數, 可以直接使用他們. 應該說明, 不同的C系統提供的庫函數的數量和功能不同, 當然有一些基本的函數是共同的.
(2).用戶自己定義的函數, 用以解決用戶的專門需要.
從函數的形式看,函數分兩類:
(1).無參函數.例如:
printstar();
print_message();
main()
{
printstar();
print_message();
printstar();
}
printstar()
{
printf("************\n");
}
print_message()
{
printf("*green food*\n");
}
運行結果如下:
************
* green food *
************
其中printstar和print_message都是無參函數.在調用無參函數時,主調函數並不將數據傳送給被調用函數.無參函數可帶回或不帶回函數值.
(2)有參函數. 在調用函數時,在主調函數與被調函數之間有數據傳遞. 也就是說主調函數可以將數據傳遞給被調函數使用, 被調函數的數據也可以傳回來共主調函數使用. 例如:
#include
print_add();
main()
{
printf("the add is: %d",print_add());
}
print_add()
{
int a=1, b=2, c;
c=a+b;
return c;
}
運行結果如下:
the add is: 3
以上我們對函數有了大致的了解, 下面我向大家介紹一下形式參數和實際參數.
首先從定義入手, 形式參數即在定義函數時函數後面括弧中的變量名. 而實際參數則是指在主調函數中調用一個函數時, 函數名後面括弧中的參數.(可以是一個表達式) 具體見下例:
#include
print_add(int, int);
main()
{
int a, b, c;
scanf("%d%d",&a,&b);
c=print_add(a,b);
printf("the add is :%d",c);//實際參數
}
print_add(int x, int y)//形式參數
{
int z;
z=x+y;
return(z);
}
需要注意的幾點問題:
(1) 實參可以是常量,變量, 或表達式, 但必須要有確切的值.
(2) 在被定義的函數中, 必須指定形參的類型.
(3) 形參與實參的類型應相同或賦值兼容.
函數需要講的東西還有很多, 這裡只是一個簡略的介紹. 還有很多的內容沒有涉及到, 推薦大有時間可以看看譚浩強的書. 關於函數部分譚老的書要比老Delitel寫的有條理的多.(也許是翻譯工作做的不好)希望大家在看了上面的文章後, 能有所幫助. 有問題可以給我寫信, 我的郵箱是:[email protected]