1. 程式人生 > >C++學習(三)入門篇——函數

C++學習(三)入門篇——函數

image clu square src 函數接口 值類型 使用 mes 技術分享

C++函數分兩種:有返回值的和沒返回值的

1.有返回值的函數

技術分享

調用函數流程

如圖,sqrt(6.25)為函數調用,被調用的函數叫做被調用函數,包含函數調用的函數叫做調用函數。

技術分享

參數是發送給函數的信息,返回值是從函數中發送回去的值。

在使用函數之前,C++編譯器必須知道函數的參數類型和返回值類型。如果缺少,編譯器將不知道如何解釋返回值。

C++程序應為程序中使用的每個函數提供原型

sqrt()的函數原型:

double sqrt(double);

如果省略分號,那麽這行代碼將被解釋為一個函數頭,並要求接著提供定義該函數的函數體。

提供函數原型有兩種方法:

1.在源代碼文件中輸入函數原型

2.包含文件cmath,其中定義了原型(更好)

不要混淆函數原型和函數定義。原型只描述函數接口(描述發送給函數的信息和返回的信息)。頭文件中包含了原型,庫文件中包含了函數的編譯代碼。

程序清單2.4 sqrt.cpp
//sqrt.cpp - - using the sqrt() function #include<iostream> #include<cmath> int main() { using namespace std; double area; cout << "Enter the floor area,in square feet,of your home:"; cin >> area; cin.get(); double side; side = sqrt(area); cout << "That‘s the equivalent of a square " << side << " feet to the side." << endl; cout << "How fascinating!" << endl; cin.get(); return 0; }

C++庫函數存儲在庫文件中,如果運行程序時,得到消息指出_sqrt是一個沒有定義的外部函數,很有可能是編譯器不能自動搜索數學庫(編譯器傾向於給函數名添加下劃線前綴——提示它們對程序具有最後的發言權)。

C++允許在程序的任何地方聲明新變量,也可以在創建變量時對它賦值

double side=sqrt(area) 叫做初始化

cin知道如何將輸入流中的信息轉化為double型,cout知道如何將double類型插入到輸出流中,這些對象都很智能化。

2.函數變體

有些函數需要多項信息

如:pow()

double pow(double,double);第一個參數為底,第二個參數為指數的冪

answer=pow(5.0,8.0)

另外一些函數不接受任何參數

int rand(void);該函數不接受任何參數,並返回一個隨機整數

省略void,括號為空,則是一個不接受任何參數的隱式聲明

如:myGuess=rand();

C++中,函數調用中必須包括括號,即使沒有參數

還有些函數不需要返回值,如顯示一個時刻表,在屏幕中顯示就好

void bucks(double);

由於不返回值,不能放在賦值語句或其他表達式中,而是一條純粹的函數調用語句

bucks(1234.56);

在有些語言中,有返回值的叫函數,沒有的叫過程

標準C庫提供了140多個預定義的函數,如果其中的函數滿足要求則調用它們。

不滿足,就自己寫。

對於庫函數,通常把原型放在main()定義之前,並提供新函數的源代碼,放在main()後面。

C++學習(三)入門篇——函數