每個C++程序都包含一個或多個函數(shù)(function),其中的一個函數(shù)的名稱必須是main。一個函數(shù)由一系列執(zhí)行函數(shù)功能的語句(statement)組成。操作系統(tǒng)通過調(diào)用main函數(shù)來執(zhí)行程序。這個函數(shù)執(zhí)行它的組成語句并給操作系統(tǒng)返回一個值。
下面是一個簡單的main函數(shù),它沒有返回值:
int main()
{
return 0;
}
操作系統(tǒng)利用main函數(shù)返回的值判斷程序執(zhí)行成功還是失敗。返回0表明成功了。
Main函數(shù)很特殊,其中最重要的是這個函數(shù)必須存在于每個C++程序中,而且它是操作系統(tǒng)明確調(diào)用的一個函數(shù)。
我們定義main函數(shù)的方式與定義其它函數(shù)是一樣的。函數(shù)定義說明了四個部分:返回類型、函數(shù)名稱、括號中帶有的參數(shù)列表(可能為空)和函數(shù)主體。Main函數(shù)可能包含一組參數(shù)。在上面的定義中,參數(shù)列表是空的。
上面的main函數(shù)需要一個int類型的返回類型,它表示整型。整型是內(nèi)建的(built-in)類型,這意味著這種類型是語言所定義的。
函數(shù)定義的最后一部分(函數(shù)主體),是一組以波浪括號(curly brace)開始,以波浪反括號結(jié)束的語句塊:
{
return 0;
}
我們的程序中的一條語句是return,它是用于終止函數(shù)的語句。
注意
請注意return語句后面的分號。在C++中分號標(biāo)志著大多數(shù)語句的結(jié)束。它們?nèi)菀妆缓雎?,如果忘記了可能?dǎo)致難以理解的編譯器錯誤信息。
當(dāng)return包含一個值(例如0)的時候,這個值就是函數(shù)的返回值。返回值的類型必須與函數(shù)的返回類型相同或者必須能夠轉(zhuǎn)換成那種類型。在例子中main的返回類型是整型,而值0也是整型的。
在大多數(shù)系統(tǒng)中,main的返回值是狀態(tài)標(biāo)識。返回值為0表明main成功執(zhí)行了。其它的返回值的意義由操作系統(tǒng)來定義。通常非0的返回值表明發(fā)生了錯誤。每個操作系統(tǒng)都由自身的、用于告訴用戶main函數(shù)返回值的途徑。
1、編譯和執(zhí)行程序
我們在編寫程序之后需要編譯它。編譯程序的方法依賴于操作系統(tǒng)和編譯器。如果你想了解編譯器工作的細(xì)節(jié)信息,那么需要查看參考或者求助同事。
很多基于PC的編譯器都在集成開發(fā)環(huán)境(IDE)中運(yùn)行,同時它還綁定了相關(guān)的建立和分析工具。這些環(huán)境對于開發(fā)復(fù)雜的程序有很大的幫助,但是需要我們花大量的時間來學(xué)習(xí)如何高效率地使用它們。很多環(huán)境都包含了鼠標(biāo)指向和點(diǎn)擊(point-and-click)界面,它允許程序員編寫程序并使用多種菜單來編譯和運(yùn)行程序。本文沒有介紹這一方面的內(nèi)容。
很多編譯器(包括隨著IDE發(fā)布的),提供了命令行接口。除非你對編譯器IDE的使用非常熟悉,否則使用命令行接口更加容易使用編譯器。使用命令行接口可以避免在學(xué)習(xí)某種語言之前需要先學(xué)習(xí)IDE的開銷。
程序源文件命名習(xí)慣
無論使用命令行接口還是IDE,大多數(shù)編譯器都希望被編譯的程序存儲在文件中。程序文件一般稱為源文件。在大多數(shù)系統(tǒng)中,源文件的名稱包含兩個部分--文件名(例如prog1)和擴(kuò)展名。按照習(xí)慣,擴(kuò)展名表明該文件是一個程序。擴(kuò)展名通常表明了程序是用哪種語言編寫的,應(yīng)該選擇哪種編譯器來運(yùn)行。我們用來編譯本文中的示例文件的系統(tǒng)把擴(kuò)展名.CC作為C++程序,因此我們把程序保存為:prog1.cc
C++程序文件的擴(kuò)展名依賴于你所使用的編譯器。其它一些命名習(xí)慣還包括:
prog1.cxx
prog1.cpp
prog1.cp
prog1.C
下面是一個簡單的main函數(shù),它沒有返回值:
int main()
{
return 0;
}
操作系統(tǒng)利用main函數(shù)返回的值判斷程序執(zhí)行成功還是失敗。返回0表明成功了。
Main函數(shù)很特殊,其中最重要的是這個函數(shù)必須存在于每個C++程序中,而且它是操作系統(tǒng)明確調(diào)用的一個函數(shù)。
我們定義main函數(shù)的方式與定義其它函數(shù)是一樣的。函數(shù)定義說明了四個部分:返回類型、函數(shù)名稱、括號中帶有的參數(shù)列表(可能為空)和函數(shù)主體。Main函數(shù)可能包含一組參數(shù)。在上面的定義中,參數(shù)列表是空的。
上面的main函數(shù)需要一個int類型的返回類型,它表示整型。整型是內(nèi)建的(built-in)類型,這意味著這種類型是語言所定義的。
函數(shù)定義的最后一部分(函數(shù)主體),是一組以波浪括號(curly brace)開始,以波浪反括號結(jié)束的語句塊:
{
return 0;
}
我們的程序中的一條語句是return,它是用于終止函數(shù)的語句。
注意
請注意return語句后面的分號。在C++中分號標(biāo)志著大多數(shù)語句的結(jié)束。它們?nèi)菀妆缓雎?,如果忘記了可能?dǎo)致難以理解的編譯器錯誤信息。
當(dāng)return包含一個值(例如0)的時候,這個值就是函數(shù)的返回值。返回值的類型必須與函數(shù)的返回類型相同或者必須能夠轉(zhuǎn)換成那種類型。在例子中main的返回類型是整型,而值0也是整型的。
在大多數(shù)系統(tǒng)中,main的返回值是狀態(tài)標(biāo)識。返回值為0表明main成功執(zhí)行了。其它的返回值的意義由操作系統(tǒng)來定義。通常非0的返回值表明發(fā)生了錯誤。每個操作系統(tǒng)都由自身的、用于告訴用戶main函數(shù)返回值的途徑。
1、編譯和執(zhí)行程序
我們在編寫程序之后需要編譯它。編譯程序的方法依賴于操作系統(tǒng)和編譯器。如果你想了解編譯器工作的細(xì)節(jié)信息,那么需要查看參考或者求助同事。
很多基于PC的編譯器都在集成開發(fā)環(huán)境(IDE)中運(yùn)行,同時它還綁定了相關(guān)的建立和分析工具。這些環(huán)境對于開發(fā)復(fù)雜的程序有很大的幫助,但是需要我們花大量的時間來學(xué)習(xí)如何高效率地使用它們。很多環(huán)境都包含了鼠標(biāo)指向和點(diǎn)擊(point-and-click)界面,它允許程序員編寫程序并使用多種菜單來編譯和運(yùn)行程序。本文沒有介紹這一方面的內(nèi)容。
很多編譯器(包括隨著IDE發(fā)布的),提供了命令行接口。除非你對編譯器IDE的使用非常熟悉,否則使用命令行接口更加容易使用編譯器。使用命令行接口可以避免在學(xué)習(xí)某種語言之前需要先學(xué)習(xí)IDE的開銷。
程序源文件命名習(xí)慣
無論使用命令行接口還是IDE,大多數(shù)編譯器都希望被編譯的程序存儲在文件中。程序文件一般稱為源文件。在大多數(shù)系統(tǒng)中,源文件的名稱包含兩個部分--文件名(例如prog1)和擴(kuò)展名。按照習(xí)慣,擴(kuò)展名表明該文件是一個程序。擴(kuò)展名通常表明了程序是用哪種語言編寫的,應(yīng)該選擇哪種編譯器來運(yùn)行。我們用來編譯本文中的示例文件的系統(tǒng)把擴(kuò)展名.CC作為C++程序,因此我們把程序保存為:prog1.cc
C++程序文件的擴(kuò)展名依賴于你所使用的編譯器。其它一些命名習(xí)慣還包括:
prog1.cxx
prog1.cpp
prog1.cp
prog1.C