本文同時(shí)發(fā)布在我的個(gè)人博客上:https://dragon_boy.gitee.io
hello world!程序
//Hello World!
#include <iostream>
int main()
{
using namespace std;
cout << "Hello World!" << endl;
return 0;
}
上述程序包含以下元素:
- 注釋?zhuān)?/標(biāo)識(shí)穷吮。
- 預(yù)處理器編譯指令
#include
逻翁。 - 函數(shù)頭
int main()
。 - 編譯指令using namespace捡鱼。
- 函數(shù)體八回,用
{}
擴(kuò)起。 - 使用C++的
cout
工具顯示消息的語(yǔ)句 驾诈。 - 結(jié)束
main()
函數(shù)的return
語(yǔ)句缠诅。
main()函數(shù)
int main()叫函數(shù)頭,花括號(hào)中包括的部分叫函數(shù)體乍迄,顯示在下圖:
函數(shù)體是指函數(shù)應(yīng)做什么的計(jì)算機(jī)指令管引。在C++中,每條完整的指令都成為語(yǔ)句闯两。所有的語(yǔ)句都以分號(hào)結(jié)束褥伴。main()中的最后一條語(yǔ)句叫做返回語(yǔ)句,它結(jié)束該函數(shù)漾狼。
C++函數(shù)可被其它函數(shù)激活或調(diào)用重慢,函數(shù)頭描述了函數(shù)與調(diào)用它的函數(shù)之間的接口。位于函數(shù)名前面的部分叫做函數(shù)返回類(lèi)型逊躁,即從函數(shù)返回給調(diào)用它的函數(shù)的信息似踱。函數(shù)名后括號(hào)中的部分叫做形參列表,即從調(diào)用函數(shù)傳遞到被調(diào)用函數(shù)的信息稽煤。通常不從其它部分調(diào)用main()核芽。
main()被啟動(dòng)代碼調(diào)用,而啟動(dòng)代碼是由編譯器添加到程序中的酵熙,是程序和操作系統(tǒng)之間的橋梁轧简。即該函數(shù)頭描述的是main()和操作系統(tǒng)之間的接口。
C++預(yù)處理器和iostream文件
程序使用預(yù)處理器在進(jìn)行主編譯之前對(duì)源文件進(jìn)行處理匾二,不必執(zhí)行任何特殊操作來(lái)調(diào)用該預(yù)處理器吉懊,它會(huì)在編譯程序時(shí)自動(dòng)運(yùn)行庐橙。
#include <iostream>
該編譯指令將讓預(yù)處理器將iostream文件的內(nèi)容添加到程序中。
頭文件名
像iostream這樣的文件叫做包含文件借嗽,或頭文件态鳖。
名稱(chēng)空間
如果不使用傳統(tǒng)的.h后綴的包含文件,則要使用名稱(chēng)空間編譯指令來(lái)使iostream中的定義對(duì)程序可用:
using namespace std;
名稱(chēng)空間的存在意義是為了可以存在重名的元素恶导。C++的內(nèi)置相關(guān)組件存儲(chǔ)在std名稱(chēng)空間中浆竭,有三種方式使用:
using namespace std; //全局使用
std::something; //單獨(dú)使用
using std::something; //全局聲明某一單一指令
cout進(jìn)行輸出
cout << "Hello World!" << endl;
雙括號(hào)擴(kuò)起的是要打印的信息。<<符號(hào)將該字符傳給cout惨寿。cout是一個(gè)預(yù)定義的對(duì)象邦泄。
從概念上,輸出一個(gè)流裂垦,即從程序流出的一系列字符顺囊,cout對(duì)象表示這種流,其屬性在iostream文件中定義蕉拢,cout對(duì)象屬性包括<<特碳,它可以將右側(cè)信息插入到流中。
endl
endl是一個(gè)特殊C++符號(hào)晕换,重啟一行午乓。換行符
舊式方法:\n
,與endl的差別是:endl確保程序繼續(xù)運(yùn)行前刷新輸出(將其立即顯示在屏幕上)闸准,而\n
不一定保證益愈。
C++語(yǔ)句
C++程序是一組函數(shù),而每個(gè)函數(shù)又是一組語(yǔ)句夷家。
聲明語(yǔ)句和變量
int carrots;
該語(yǔ)句提供了兩項(xiàng)信息:需要的內(nèi)存以及該內(nèi)存單元的名稱(chēng)蒸其。
賦值語(yǔ)句
carrots = 25;
=
為賦值運(yùn)算符,C++可以連續(xù)使用库快。
int a, b, c;
a = b= c = 0;
賦值從右向左進(jìn)行摸袁。
其它C++語(yǔ)句
cin
cin >> carrots;
這條語(yǔ)句,信息從cin流向carrots缺谴。
cout拼接
cout可以將多個(gè)輸出語(yǔ)句進(jìn)行拼接:
cout << "I have" << carrots << "carrots" << endl;
//
cout << "I have"
<< "some carrots"
<< endl;
類(lèi)
類(lèi)定義描述的是數(shù)據(jù)格式及其用法,對(duì)象則是根據(jù)數(shù)據(jù)格式規(guī)范創(chuàng)建的實(shí)體耳鸯。
int carrots;
上述代碼將創(chuàng)建一個(gè)int類(lèi)型的變量湿蛔,即carrots可以存儲(chǔ)整數(shù),可以按特定的方式使用县爬。cout是一個(gè)ostream對(duì)象阳啥,ostream類(lèi)定義描述了對(duì)象表示的數(shù)據(jù)以及可以對(duì)它執(zhí)行的操作,cin是一個(gè)istream對(duì)象财喳。
函數(shù)
C++函數(shù)分兩種: 有返回值和無(wú)返回值察迟。
有返回值函數(shù)
如內(nèi)置sqrt()斩狱,計(jì)算平方根的函數(shù):
x = sqrt(6.25);
表達(dá)式sqrt(6.25)被稱(chēng)為函數(shù)調(diào)用,被調(diào)用的函數(shù)叫做被調(diào)用函數(shù)扎瓶,包含函數(shù)調(diào)用的函數(shù)叫做調(diào)用函數(shù)所踊,圓括號(hào)中的值是發(fā)送給函數(shù)的信息,即參數(shù)概荷。函數(shù)sqrt()得到結(jié)果為2.5并將這個(gè)值發(fā)送給調(diào)用函數(shù)秕岛,這個(gè)值叫做返回值。簡(jiǎn)而言之误证,參數(shù)是發(fā)送給函數(shù)的信息继薛,返回值是從函數(shù)中發(fā)送回去的值。
C++提供函數(shù)的參數(shù)類(lèi)型和返回值類(lèi)型的語(yǔ)句稱(chēng)為函數(shù)原型語(yǔ)句愈捅,應(yīng)當(dāng)為每個(gè)函數(shù)提供原型遏考。sqrt()函數(shù)的原型如下:
double sqrt(double);
函數(shù)變體
有些函數(shù)需要多個(gè)參數(shù),如pow函數(shù):
double pow(double, double);
有些函數(shù)不需要參數(shù)蓝谨,如rand:
int rand();
有些函數(shù)沒(méi)有返回值:
void bucks(double);
總結(jié)
C++程序由一個(gè)或多個(gè)被稱(chēng)為函數(shù)的模塊組成灌具。程序從main()開(kāi)始執(zhí)行。函數(shù)由函數(shù)頭和函數(shù)體組成像棘,函數(shù)頭指出函數(shù)的返回值的類(lèi)型和函數(shù)期望通過(guò)參數(shù)傳遞給它的信息的類(lèi)型稽亏。
有多種類(lèi)型的C++語(yǔ)句:
- 聲明語(yǔ)句
- 賦值語(yǔ)句
- 消息語(yǔ)句
- 函數(shù)調(diào)用
- 函數(shù)原型
- 返回語(yǔ)句
類(lèi)是用戶(hù)定義的數(shù)據(jù)類(lèi)型規(guī)范,它描述了如何表示信息以及可對(duì)數(shù)據(jù)執(zhí)行的操作缕题。對(duì)象是根據(jù)類(lèi)規(guī)范創(chuàng)建的實(shí)體截歉。
C++提供了兩個(gè)用于處理輸入和輸出的預(yù)定義對(duì)象,他們是istream和ostream類(lèi)的實(shí)例烟零。cin和cout都是智能對(duì)象瘪松,能夠根據(jù)程序上下文自動(dòng)將信息從一種形式轉(zhuǎn)化為另一種形式。