/* 程式範例
多行註解 */
#include <iostream>
using namespace std;
int main()
{
//在螢幕上印出 Hello World!
cout << "Hello, world!" <<endl;
return 0;
}
*以上程式碼的行號是為方便解說加上去的,在 Visual C++ 2008 中,若要開啟顯示行號,請點選工具>選項>文字編輯器>C/C++,在顯示下的行號勾選起來即可
程式解說
行號 1~2:由 /* 開頭至 */ 結束,表示這是一個多行註解
行號 3:空白行,這只是一個程式寫作風格的習慣,可以適時的在程式段落內使用空白行,以方便閱讀
行號 4:#include <iostream> 定義函式的標頭檔
行號 5:空白行
行號 6:使用命名空間 std,注意必須以 ; 做為語句的結束
行號 7:空白行
行號 8:int main(),表示程式的起點
行號 9:C/C++ 程式指令都必須以一對 {} 大括號包起來,這裡是起始的 {
行號10:由 // 開頭的表示是一行單行註解
行號11:用 cout 函式在螢幕上印出 Hello World!,再送出一個 endl 跳行控制碼,以 ; 做結束
行號12:傳回一個 0 給作業系統,表示程式正常結束
行號13:結束程式碼的 }
★#include <xxxxx>
在 C++ 標準函式庫內有許多函式可以用,視功能會分佈在各個不同的標頭檔內,因為此程式中需使用到 cout 這個輸出函式,而 cout 是存在於 iostream 這個標頭檔內,所以我們必須做 #include <iostream>這個動作,同理,若程式中需要用到三角函數的運算時,就可以再加一行 #include <cmath>,引入已被包進 C++ 標準函式庫裡的 math.h (#include <math.h>是 C 的寫法,在 C++ 中必須寫成 #include <cmath>
★ using namespace std ;
namespace 命名空間的意思是,同一個名稱可在多個命名空間裡定義,而它在不同命名空間中的含義是互不相干的,這樣,在一個新的命名空間中便可定義任何名稱,它們不會與任何已有的名稱發生衝突,因為所有的定義都處於其它命名空間中。
例如:Bill 是 X 公司的員工,員工代碼是 123,而 John 是 Y 公司的員工,員工代碼也是 123。由於二人在不同的公司工作,可以使用相同的員工代碼來識別而不會造成混亂,這裡的 X 和 Y 公司,就各表示為一個獨立的命名空間,它的表示方法如下:
X::Bill::123 Y::John::123而如果常常使用到 X::Bill::123 這個物件時,我們可以使用 using namespace X 這個宣告,那麼在程式碼中只要輸入
Bill::123即可
在 C++ 中,因為標準函式庫非常的龐大,撰寫程式時在選擇類別名稱或函數名稱時很有可能和標準函式庫中的某個名稱相同,為了避免這種情況所造成的名稱衝突,所以就把標準函式庫中的所有名稱都放在命名空間 std 中,命名空間 std 封裝了 C++ 標準函式庫,using namespace std 就是告訴編譯器使用標準命名空間std,程式中使用C++標準函式庫的標頭檔都在 std 中尋找,C++ 的標頭檔為了和以前的 C 有所區分,一般不加副檔名.h
★ int main()
main()是一個特別的函數,代表的是程式的起始點,既然它是一個函數,就有可能有傳入值,應該要有返回值!怎麼講呢?
其實 int main() 原型應該是這樣子的:
int main(void)不需要傳入值,返回值為整數型態
或
int main(int argc, char *argv[])有傳入值,返回值為整數型態
其中 argc表示傳入的參數個數,argv[]表示存放參數的地方,argc 若設成 2 ,則表示程式啟動時可以有二個引數進入分別是 argv[0]和argv[1],如果程式中不需要有傳入值時,就不需要使用這樣的宣告,但如果有需要引數傳入時,則要注意,第一個傳入的引數一定是這個程式本身的檔名。
因為以上二種寫法都宣告了返回值為 int 型態,所以必須在程式結束時加上 return 0;,在某些編譯器上,不加其實也不會出錯,但既然標準訂了,還是加上了的好,以免發生什麼突發狀況
另外有可能在書本上或網路上的範例看到以下寫法,雖然不是 ANSI-C 的標準,但大部份情況下還是可以執行的:
void main(void)沒有返回值,沒有傳入值
或
void main(int argc, char *argv[]) 沒有返回值,有傳入值
以上四種寫法,大部份情況下是都可以正常編譯執行的,但為了符合標準,建議還是使用前二種寫法較為妥當

沒有留言:
張貼留言