麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁 > 編程 > C++ > 正文

C++函數(shù)的聲明和定義

2020-05-23 14:27:54
字體:
供稿:網(wǎng)友
在上一節(jié),我們已經(jīng)學會了如何閱讀函數(shù)原型和如何調(diào)用一個函數(shù)。然而,僅靠系統(tǒng)給出的標準庫函數(shù)是不夠用的。我們有時候要根據(jù)我們的實際要求,寫出一個合適自己使用的函數(shù)。
那么,我們?nèi)绾蝸碜约簞邮志帉懸粋€函數(shù)呢?

首先,我們要告訴電腦,我們自己編寫了一個函數(shù),即這個函數(shù)是存在的,這叫作函數(shù)的聲明(Declaration)。其次,我們要告訴電腦這個函數(shù)是怎么運作的,這叫作函數(shù)的定義(Definition)。顯然,函數(shù)的聲明和函數(shù)的定義是兩個不同的概念。聲明表示該函數(shù)存在,而定義則是表示該函數(shù)怎么去運行。

我們平時做事都是要有先后順序的,如果把次序顛倒了可能會惹些麻煩出來。編寫函數(shù)的時候也一樣。我們必須在調(diào)用一個函數(shù)之前就告訴電腦這個函數(shù)已經(jīng)存在了,否則就成了“馬后炮”。所以,我們一般把函數(shù)的聲明放在主函數(shù)前面。

函數(shù)的聲明

在C++中,函數(shù)原型就是函數(shù)的聲明。所以,函數(shù)原型除了向用戶說明如何使用一個函數(shù)以外,還告訴電腦存在這樣一個可以使用的函數(shù)。

我們已經(jīng)介紹了函數(shù)原型的結(jié)構(gòu),只不過“產(chǎn)生結(jié)果類型”這個名稱是為了方便理解而起的。它應該稱為“返回值類型”,用任意一種數(shù)據(jù)類型來表示,比如int或者char等等,當然還包括空類型void。多個參數(shù)則構(gòu)成了“參數(shù)表”,表示運行這個函數(shù)需要哪些數(shù)據(jù)。于是,函數(shù)原型的結(jié)構(gòu)就是:
    返回值類型函數(shù)名(參數(shù)表);
函數(shù)聲明同變量的聲明一樣,是一句語句。所以在語句結(jié)束要加上分號。函數(shù)名、參數(shù)名的規(guī)則和注意事項同變量名一樣。

關(guān)于“返回”的概念稍后再作介紹,我們先來說說參數(shù)表。我們知道,在聲明函數(shù)的時候,會寫一些參數(shù),而在調(diào)用函數(shù)的時候需要一一對應地填入這些參數(shù)。雖然它們都叫參數(shù),但在不同的情況下,它們的含義是不同的。在聲明一個函數(shù)的時候,參數(shù)是沒有實際值的,只是起到一個占位的作用,所以稱為形式參數(shù),簡稱“形參”;在調(diào)用一個函數(shù)的時候,參數(shù)必須有一個確定的值,是真正能夠?qū)Y(jié)果起作用的因素,所以稱為實際參數(shù),簡稱“實參”。我們拿數(shù)學中的函數(shù)作為例子,g(x,y)=x/4+y中的x和y就是形式參數(shù),而g(4,1)=4/4+1=2中的4和1就是實際參數(shù);如果令a=4、b=1,那么g(a,b)中的a和b也是實際參數(shù)。

函數(shù)的定義

說完了函數(shù)的聲明,我們來說函數(shù)的定義。其實函數(shù)的定義對大家來說是比較熟悉的。因為我們之前所寫的程序都是對主函數(shù)的定義。函數(shù)定義的格式為:
沒有分號結(jié)尾的函數(shù)原型
{
    語句塊;
}


我們把函數(shù)定義中沒有分號結(jié)尾的函數(shù)原型稱為函數(shù)頭,把之后的語句塊稱為函數(shù)體。任何一個函數(shù)的定義不能出現(xiàn)在另一個函數(shù)體內(nèi)。但函數(shù)體內(nèi)可以調(diào)用任何一個函數(shù),包括其本身。
下面我們先來看一個例子,你就會對函數(shù)定義有些了解了。(程序6.2.1)

C++函數(shù)的聲明和定義

運行結(jié)果:
5
程序在運行的時候從main函數(shù)開始,遇到調(diào)用一個用戶定義的函數(shù)max,則去查找這個max函數(shù)的定義,然后運行max函數(shù)。運行完了以后,回到調(diào)用max函數(shù)的地方,繼續(xù)后面的語句,直到程序結(jié)束。所以整個程序的運行過程如箭頭所示。

不要使用相同的變量和參數(shù)

如果在一個班級里有兩個同名同姓的同學,那么老師上課點名將是件麻煩事。因為大家都搞不清到底是在叫誰??墒牵绻麅蓚€不同的班級有兩個同名同姓的同學,就不會發(fā)生這種尷尬,因為老師在不同的教室點相同的名字,會有反應的只有一個同學。

我們把這個問題套用到函數(shù)上來。如果在同一個函數(shù)有兩個名字相同的變量,那么電腦將無法分清到底要使用哪個變量,導致錯誤發(fā)生。而在不同的函數(shù)中,即使有相同名稱的變量,由于在某一個函數(shù)中該變量的名稱是唯一的,電腦也能方便的識別要使用哪個變量。因此,我們得到這樣一個結(jié)論:一般情況下,在同一個函數(shù)中,不能有名稱相同的變量或參數(shù);在兩個不同的函數(shù)中,可以有名稱相同的變量或參數(shù)。

下面就讓我們來看一個實例:(程序6.2.2)
#include "iostream.h"
int max(int a,int b,int c);//求三個整數(shù)的最大者
int min(int a,int b,int c);//求三個整數(shù)的最小者
void output(int a);//輸出功能
int main()
{
   int a=3,b=4,c=2;
   output(max(a,b,c));//把max函數(shù)的返回值作為output函數(shù)的實參
   output(min(a,b,c));
   return 0;
}
int max(int a,int b,int c)//不在同一個函數(shù)中,參數(shù)名重復沒關(guān)系
{
   if (a>=b && a>=c) return a;
   if (b>=a && b>=c) return b;
   return c;//一旦執(zhí)行了前面的return,這句就不會被執(zhí)行到
}
int min(int a,int b,int c)
{
   if (a<=b && a<=c) return a;
   if (b<=a && b<=c) return b;
   return c;
}
void output(int a)
{
   cout <<a <<endl;
   return;//返回空類型
}
運行結(jié)果:
4
2
要注意,一旦函數(shù)運行結(jié)束,那么該函數(shù)中聲明的參數(shù)和變量都將消失。就像下課了,同學們都回家了,老師叫誰都是叫不應的。
發(fā)表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發(fā)表
主站蜘蛛池模板: 国产免费视频一区二区裸体 | 久久精品国产99久久久古代 | 日本精品视频一区二区三区四区 | 国产精品麻豆91 | 激情大乳女做爰办公室韩国 | 自拍偷拍999| 国产精品久久久久久影院8一贰佰 | 欧美aaaaa一级毛片在线 | 国产高清美女一级毛片久久 | 中国videos露脸hd | 羞羞的动漫在线观看 | 91在线视频导航 | 亚洲最新黄色网址 | 九九精品在线观看 | 日本在线免费观看视频 | 黄网免费看 | 日本在线国产 | 久久综合福利 | 黄色大片www| 亚洲生活片 | 女人久久久www免费人成看片 | 国产精品一区在线免费观看 | 深夜福利视频免费观看 | 国产一及毛片 | 素人视频在线观看免费 | 亚洲一区国产二区 | 成人福利软件 | 午夜精品成人一区二区 | 91久久久久久久久久久久久久 | 99欧美视频| 在线观看免费污视频 | av电影观看 | 欧美成人免费小视频 | 久久精品亚洲精品国产欧美kt∨ | 成人毛片免费视频 | 精品久久久久久久久久久久久 | 色婷婷一区二区三区 | 久久国产精品久久久久久久久久 | 精品一区二区免费视频视频 | 日日摸夜夜添夜夜添牛牛 | 久久精品久 |