久久国产成人av_抖音国产毛片_a片网站免费观看_A片无码播放手机在线观看,色五月在线观看,亚洲精品m在线观看,女人自慰的免费网址,悠悠在线观看精品视频,一级日本片免费的,亚洲精品久,国产精品成人久久久久久久

分享

7.1 函數(shù)定義,、提供原型和調(diào)用函數(shù)

 Cui_home 2023-04-10 發(fā)布于天津
  • 要使用C++函數(shù),,必須完成 3 個(gè)工作:① 提供函數(shù)定義,;② 提供函數(shù)原型,;③ 調(diào)用函數(shù),。

  • 庫(kù)函數(shù)是已經(jīng)定義和編譯好的函數(shù),,同時(shí)可以使用標(biāo)準(zhǔn)庫(kù)頭文件提供其原型。如 strlen() 函數(shù)用來(lái)確定字符串的長(zhǎng)度,,頭文件 cstring 包含了 strlen() 函數(shù)的原型,,只需要包含頭文件 #include <cstring> 即可。

  • calling.cpp程序演示了函數(shù)定義,、提供原型和調(diào)用:

// calling.cpp -- defining, prototyping, and calling a function
#include <iostream>

// function prototype
void simple();

int main()
{
	using namespace std;
	
	cout << "main() will call the simple() function:\n";
	simple();	// function call
	cout << "main() is finished with the simple() function.\n";
	
	return 0;
}

// function definition
void simple()
{
	using namespace std;
	cout << "I'm but a simple function.\n";
}

編譯輸出:

main() will call the simple() function:
I'm but a simple function.
main() is finished with the simple() function.

① 執(zhí)行simple()時(shí),,將暫停執(zhí)行main()的代碼; 等simple()執(zhí)行完畢后,繼續(xù)執(zhí)行main()中的代碼,。

② 每個(gè)函數(shù)定義中,,都使用了一條using編譯指令,因?yàn)槊總€(gè)函數(shù)都使用了cout,。

7.1.1 定義函數(shù)

  • 函數(shù)分為兩類(lèi):

1. 沒(méi)有返回值的函數(shù)被稱(chēng)為void函數(shù),。語(yǔ)法如下:

void functionName (parameterList)
{
  statements;
  return;	// optional
}

其中,parameterList指定了傳遞給函數(shù)的參數(shù)類(lèi)型和數(shù)量,;返回語(yǔ)句 return 0; 是可選的,;

2. 有返回值的函數(shù),將生成一個(gè)值,,并將它返回給調(diào)用函數(shù),。語(yǔ)法如下:

typeName functionName (parameterList)
{
  statemets;
  return value;	// value is type cast to type typeName
}

① 函數(shù)的類(lèi)型被聲明為返回值的類(lèi)型。

② 對(duì)于有返回值的函數(shù),,必須使用返回語(yǔ)句,,以便將值返回給調(diào)用函數(shù)。值可以是常量,、變量,,也可以是表達(dá)式,,只是其結(jié)果的類(lèi)型必須為typeName類(lèi)型或可以被轉(zhuǎn)換為typeName。然后,,函數(shù)將最終的值返回給調(diào)用函數(shù),。

③ C++對(duì)于返回值的類(lèi)型有一定的限制:不能是數(shù)組,但可以是其他任何類(lèi)型 — 整數(shù),、浮點(diǎn)數(shù),、指針,結(jié)構(gòu)和對(duì)象,。

通常,,函數(shù)通過(guò)將返回值復(fù)制到指定的CPU寄存器或內(nèi)存單元中將其返回。隨后,,調(diào)用程序?qū)⒉榭丛搩?nèi)存單元,。返回函數(shù)和調(diào)用函數(shù)必須就該內(nèi)存單元中存儲(chǔ)的數(shù)據(jù)類(lèi)型達(dá)成一致。函數(shù)定義計(jì)算返回值,,調(diào)用函數(shù)尋找返回值,。

函數(shù)在執(zhí)行返回語(yǔ)句后結(jié)束。如果函數(shù)包含多條返回語(yǔ)句,,則函數(shù)在執(zhí)行遇到的第一條返回語(yǔ)句后結(jié)束,。

7.1.2 函數(shù)原型和函數(shù)調(diào)用

  • 函數(shù)原型經(jīng)常隱藏在include文件中。

  • protos.cpp程序使用了函數(shù)cheer()和cube(),,注意其中的函數(shù)原型:

#include <iostream>

void cheers(int);	// prototype: no return value
double cube(double x);	// prototype: return a double

int main()
{
	using namespace std;
	
	cheers(5);	// function call
	cout << "Give me a number: ";
	double side;
	cin >> side;
	double volume = cube(side);	// function call
	cout << "A " << side << "-foot cube has a volume of " 
         << volume << " cubic feet.\n";
	cheers(cube(2));	// prototype protection at work
	
	
	return 0;
}

void cheers(int n)
{
	using namespace std;
	for (int i = 0; i < n; i++)
		cout << "Cheers! ";
	cout << endl;
}

double cube(double x)
{
	return x * x * x; 
}

編譯輸出:

Cheers! Cheers! Cheers! Cheers! Cheers!
Give me a number: 5
A 5-foot cube has a volume of 125 cubic feet.
Cheers! Cheers! Cheers! Cheers! Cheers! Cheers! Cheers! Cheers!

① 只有在函數(shù)使用了名稱(chēng)空間std中的成員時(shí),,才在該函數(shù)中使用了using編譯指令。

② main()使用函數(shù)名和參數(shù)來(lái)調(diào)用void類(lèi)型的函數(shù),。

③ 由于cube()有返回值,,因此main()可以將其用在賦值語(yǔ)句中。

  • 為什么需要原型,?

    原型描述了函數(shù)到編譯器的接口,。它將函數(shù)返回值的類(lèi)型以及參數(shù)的類(lèi)型和數(shù)量告訴編譯器。

    ② C++編程風(fēng)格是將main()放在最前面,,因?yàn)樗ǔL峁┝顺绦虻恼w結(jié)構(gòu),。

  • 原型的語(yǔ)法

    ① 函數(shù)原型是一條語(yǔ)句,必須以分號(hào)結(jié)束,。

    ② 函數(shù)原型不要求提供變量名,,有類(lèi)型列表就足夠了。

    ③ 通常,,在原型的參數(shù)列表中,,可以包括變量名,也可以不包括。原型中的變量名相當(dāng)于占位符,,因此不必與函數(shù)定義中的變量相同,。

  • C++原型

    ① 在C++中,原型是必不可少的,。

    ② 在C++中,,括號(hào)為空和在括號(hào)中使用關(guān)鍵字void是等效的,意味著函數(shù)沒(méi)有參數(shù),。

  • 原型的功能

    ①  編譯器正確處理函數(shù)的返回值,。

    ② 編譯器檢查使用的參數(shù)數(shù)目是否正確。

    ③ 編譯器檢查使用的參數(shù)類(lèi)型是否正確,。如果不正確,,則轉(zhuǎn)換為正確的類(lèi)型。

  • C++自動(dòng)將傳遞的值轉(zhuǎn)換為原型中指定的類(lèi)型,,條件是兩者都是算術(shù)類(lèi)型,。僅當(dāng)有意義時(shí),,原型化才會(huì)導(dǎo)致類(lèi)型轉(zhuǎn)換,。

  • 在編譯階段進(jìn)行的原型化被稱(chēng)為靜態(tài)類(lèi)型檢查(static type checking)??梢钥闯?,靜態(tài)類(lèi)型檢查可捕獲許多在運(yùn)行階段非常難以捕獲的錯(cuò)誤。

    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶(hù) 評(píng)論公約

    類(lèi)似文章 更多