您好,登錄后才能下訂單哦!
小編給大家分享一下C++程序的示例分析,相信大部分人都還不怎么了解,因此分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后大有收獲,下面讓我們一起去了解一下吧!
我們先來看一段C++的示例代碼:
// my first cpp file #include <iostream> int main() { using namespace std; cout << "hellworld" << endl; return 0; }
這段代碼雖然很短,但幾個重要的要素都包含了,如果只是用來刷題,會發現基本上也只會用到這些語法。
我們一行一行來看。
首先是第一行,第一行表示的C++當中的注釋。C語言當中的/**/的多行注釋方法同樣支持,但為了避免潛在的問題,盡量使用C++類型的注釋。
第二行是預編譯指令include
,這里的預編譯指令是一個專業名詞,表示在編譯之前預先執行的指令。C++當中的預編譯指令有好幾種,除了include
之外還有define
、ifdef
、undef
等等,我們后面遇到了再說。
include
這個指令會引入一個源代碼文件,后面跟著的是一個包含文件名,也叫頭文件名。C語言中的頭文件以.h結尾,而C++當中兼容了C語言的頭文件,只不過將其重新命名,去掉了末尾的.h,而換成了c開頭。比如math.h
文件替換成了cmath
。
在這行代碼當中我們include
的頭文件叫做iostream
,iostream
為C++的標準輸入輸出庫,用來在終端讀入或者打印文本信息。iostream
可以拆開理解成io
和stream
,其中io表示input
、output
即輸入輸出,stream
表示流,即使用流形式進行io。
main
函數是C++程序的入口函數,C++標準當中定義的main
函數類型是int。返回0表示程序正常退出,所以一般我們要在main函數的最后寫上return 0
。
C++的main函數通常有兩種寫法,一種是參數留空,一種是定義參數數量以及參數值。
int main() {} int main(int argc, char* argv[]) {}
關于main
函數的傳參方法,以及參數使用方法同樣會在之后介紹,初學者隨便使用哪一種都是一樣的。
注意,有些編譯器比如vc6.0等沒有嚴格遵循gcc
規范,導致支持void
類型的main
函數。建議放棄此類不規范的編譯器,以免代碼無法遷移,并且養成不好的編碼習慣。
命名空間是C++當中的特性,用來解決大型項目名稱沖突的問題。
有可能多個程序員同時開發了getValue
函數,但當我們編譯運行的時候,編譯器無法知道我們究竟調用的是哪一個getValue,所以需要使用命名空間進行區分。比如A程序員將getValue
放入了名為A的命名空間當中,那么當我們調用getValue的時候就需要寫成A::getValue
,B程序員將它放入了名為B的命名空間中,同樣調用的時候寫成B::getValue
。
然而常用的許多函數、變量都明明在std的命名空間當中,這就意味著當我們使用這類內容的時候,都需要在前面加上std::,比如標準輸出的cout
命令,需要寫成std::cout
。
這會導致編碼變得繁瑣,所以C++提供了using namespace
的功能,即告訴編譯器當前使用的命名空間名稱,這樣我們在調用該命名空間的內容時,可以省略前綴。
除了using namespace之外我們也可以單獨使用using命令,例如:
using std::cout; using std::cin;
標準輸出工具,可以將字符串輸出在終端中。
cout
本身是一個預定義的對象,它知道如何顯示字符串、數字和單個字符。<<符號表示將字符串發送給cout
,由cout
輸出在屏幕當中。<<符號表示了信息流動的路徑,<<符號可以多個疊加連接,
比如:
cout << "hello" << "world";
endl表示當前輸出行的結束,cout
遇到endl
時會重啟一行,否則則會接在同一行后面繼續輸出。
除了使用endl之外,我們也可以使用換行符來達到同樣的效果,如:
cout << "hello" << "world\n";
C++ Primer
當中建議在輸出由內容的字符串時使用換行符,而非endl
,其他情況下使用endl
,而非換行符。這兩者絕大多數情況下是等價的,在一些特殊情況下可能會構成差異。
如endl
確保程序繼續運行前刷新輸出,而使用"\n"則意味著有時候需要在輸入信息之后才會出現提示。當然這不是重點,我們遇到的概率也非常小,如果實在搞不清楚也不用糾結,統一使用endl
也行。
以上是“C++程序的示例分析”這篇文章的所有內容,感謝各位的閱讀!相信大家都有了一定的了解,希望分享的內容對大家有所幫助,如果還想學習更多知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。