感覺世界都是約定好的,每門語言的第一個程序總是Hello World!但是也有一些書似乎是在追求個性,會用一些其他的,但是是Not Hello World!本人需要再學習一下C++,所以從最基礎的開始。世間萬物Hello World:
1 // helloworld.cpp 2 #include <iostream> 3 using namespace std; 4 5 int main() 6 { 7 cout << "Hello World!" << endl; 8 return 0; 9 }
這可能是最簡單一個程序了,僅僅是向屏幕打印“Hello World!”這一信息。但其中包含了很多概念:
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 once 2 // ..........................
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