標籤:
感覺世界都是約定好的,每門語言的第一個程式總是Hello World!但是也有一些書似乎是在追求個性,會用一些其他的,但是是Not Hello World!本人需要再學習一下C++,所以從最基礎的開始。世間萬物Hello World:
1 // helloworld.cpp2 #include <iostream>3 using namespace std;4 5 int main()6 {7 cout << "Hello World!" << endl;8 return 0;9 }
這可能是最簡單一個程式了,僅僅是向螢幕列印“Hello World!”這一資訊。但其中包含了很多概念:
- 注釋
- 預先處理指令
- main()函數
- 輸入/輸出流
1.注釋
程式第一行為一行注釋,以供程式員閱讀,編譯器會呼略。C++中有兩種注釋方法:
1 //注釋2 /*注釋*/
使用注釋的主要原因:
(1)說明用途
解釋程式碼中函數作用,包括參數意義,傳回值等資訊。
(2)說明複雜代碼
對於控制台的簡單程式中,代碼閱讀可能相對容易一些,但是在一些專業領域,代碼可能複雜而深奧,如下代碼:
1 void sort(int inArray[], int inSize) 2 { 3 for (int i = 1; i < inSize; i++) 4 { 5 int element = inArray[i]; 6 int j = i - 1; 7 while (j >= 0 && inArray[j] > element) 8 { 9 inArray[j + 1] = inArray[j];10 j--;11 }12 inArray[j + 1] = element;13 } 14 }
這是一個排序演算法,通過添加註釋可以解釋內部的一些令人迷惑的代碼。
(3)傳遞元資訊
提供建立代碼的詳細資料,但不涉及代碼的特定行為,如加入作者資訊,建立日期等等。
2.預先處理指令
產生一個C++程式有三個步驟。首先,代碼在前置處理器中運行,前置處理器識別代碼中的元資訊。隨後,代碼被編譯或轉換為電腦可識別的目標檔案。最後,通過連結變成一個應用程式。預先處理命令以#開始,第一個程式中的#include <iostream>便是,意思是提取<iostream>標頭檔的內容給當前檔案。如果不包含這個標頭檔,甚至無法完成輸出文本的任務。
常見的預先處理指令:
| 預先處理指令 |
功能 |
| #include [file] |
指定的檔案插入到代碼中指令所在的位置 |
| #define [key][value] |
每個制定的key被替換為指定的值 |
#ifdef[key] #ifndef[key] #endif |
在ifdef塊或ifndef塊中的代碼被有條件的 包含或者捨棄,這取決於是否使用#define 定義了指定的key |
| #prama [xyz] |
xyz因編譯器而異。如果前置處理期間間執行到這 一指令,通常會顯示警告或錯誤資訊 |
以下是使用前置處理器指令避免重複包含:
1 #ifndef HEADER_H_2 #define HEADER_H_3 // .........................4 #endif
若編譯器支援#pragma once指令,可用下面代碼重寫上面的代碼:
1 #pragma once2 // ..........................
3.main()函數
main()是程式的入口。其傳回值是一個int類型,指示程式的最終運行狀態。可以有參數,也可以有兩個參數:
int main(int argc, cha *argv[])
其中argc給出傳遞給程式的參數數目,argv包含這些參數。
4.輸入/輸出流
基本的輸出資料流是std::cout,此外還有std:cerr。<<將資料插入到流中。std::endl代表序列的結尾,當輸出資料流遇到std::endl時,就會將所有內容輸出並轉移到下一行。還有\n也可以。\n是一個逸出字元,是一個分行符號。下面是最常見的逸出字元:
\n 換行
\r 斷行符號
\t 定位字元
\\ 反斜線符
\" 引號
流也可以接受使用者輸入,最簡單的是使用>>。std::cin輸入資料流接受使用者鍵盤輸入。
參考:
Marc Gregoire, Nicholas A. Solter, Scott J. Kleper, C++進階編程,清華大學出版社,2012,ISBN:978-7-302-29897-7
C++知識回顧(一)