標籤:前置處理器 如何 函數名 資料類型 str 括弧 c++ 編譯 多行
1 // myfirst.cpp--displays a message 2 3 #include <iostream> // a PREPROCESSOR directive 4 int main() // function header 5 { // start of function body 6 using namespace std; // make definitions visible 7 cout << "Come up and C++ me some time."; // message 8 cout << endl; // start a new line 9 cout << "You won‘t regret it!" << endl; // more output10 // If the output window closes before you can read it,11 // add the following code:12 // cout << "Press any key to continue." <<endl;13 // cin.get(); 14 return 0; // terminate main()15 } // end of function body
對上面的代碼進行講解:
1,第一行的雙斜杠“//”表示單行注釋。注釋是給程式員看的,能夠協助程式員快速瞭解代碼的作用。編譯時間,編譯器會把注釋忽略掉。除了單行注釋,還有多行注釋: /* */
2,第三行 #include <iostream> 前置處理器編譯指令。 編譯器主編譯之前,前置處理器會進行編譯預先處理。將iostream的檔案匯入到源檔案中,組成一個複合檔案,然後才會進行主編譯。將iostream的內容添加到來源程式,是因為程式後面會用到cout、endl等。後面會將到cout、endl到底是什麼。其中 iostream 叫做包含檔案——被包含在其他檔案中,也叫標頭檔——被包含在檔案的起始位置。C語言中,標頭檔使用副檔名.h,而C++中相容C語言的副檔名形式,C++的新風格中沒有副檔名,具體可查看相關檔案。
3,第四行 int main() 是函數頭,int是函數的傳回值的類型,mian是函數名。括弧是參數列表,也叫形參列表。此處為空白,叫空參數列表。第五行和第十五行是兩個花括弧,花括弧裡面的內容是函數體,函數體內是函數具體要執行的操作。第十四行的return 0;表示函數傳回值為0.main函數比較特殊,是編譯器的入口函數。一個獨立的程式是要有main函數的,這樣編譯器才知道從哪裡開始執行。也有沒有main函數的程式,比如動態連結程式庫,是做為函數庫,也叫工具,給其他程式調用的。這種就不需要main函數了。
4,第六行 using namespace std; 這叫做using編譯指令。std是名稱空間,大型程式中會調用到兩個不同的已經封裝好的產品,可能都提供了A方法,為了讓編譯器知道具體調用哪個方法,就需要命名空間來區分。比如說命名空間分別為m、n,這樣就可以通過m::A()來調用m中的A方法,用n::A()來調用n中的A方法。而std這個命名空間比較特殊,它是C++標準命名空間,C++的標準組件類、函數、變數都放在這個命名空間,比如cout、endl就是放在命名空間std的。使用using編譯指令,std內的所有名字都能使用了。當然在大型項目中不建議這樣做。可以使用這種 using std:: cout 、using std::endl來使用cout和endl。
5,第七行 cout << "Come up and C++ me some time."; 最後的分號代表一個語句結束。雙引號括起來的一系列字元叫做字串。<<符號表示將該字串發送給cout;該符號指出了資訊流動的路徑。cout是一個預定義的對象,知道如何顯示字串、數字、字元等。<<符號是cout的一個插入運算子,可以將符號右側的資訊插入到cout對應的流中。
6,第八行 cout << endl; endl是控制符;在輸出資料流中插入endl,將導致螢幕游標移到下一行。諸如這種對cout有特殊含義的特殊符號叫做控制符。也可以使用\n換行。比如cout<<"you are beautiful\n";其中\n被視為一個字元,叫做分行符號。但有個區別是,endl會使螢幕重新整理輸出(輸出緩衝)。而\n不會有這種效果。
1 // carrots.cpp -- food processing program 2 // uses and displays a variable 3 4 #include <iostream> 5 6 int main() 7 { 8 using namespace std; 9 10 int carrots; // declare an integer variable11 12 carrots = 25; // assign a value to the variable13 cout << "I have ";14 cout << carrots; // display the value of the variable15 cout << " carrots.";16 cout << endl;17 carrots = carrots - 1; // modify the variable18 cout << "Crunch, crunch. Now I have " << carrots << " carrots." << endl;19 // cin.get();20 return 0;21 }
1,這個例子與上面的例子沒什麼太大差別。講一下第10行 int carrots; 這個表示一個聲明語句。int表示資料類型,告訴編譯器要申請一個指定大小的記憶體空間。int,在C++中表示整數。carrots表示申請的記憶體空間的一個名字。用來表示儲存空間所儲存的值。
carrots是一個變數,即值是可以變化的。
2,第12行 carrots = 25; 是一個指派陳述式,表示將25這個標記賦給carrot所儲存的記憶體空間中。有一個聯絡賦值的概念,如:a=b=c=3;表示將3賦給c,再將c的值賦給b,再將b的值賦給a。是從右向左進行賦值的。
3,第17行 carrots = carrots - 1; 表示carrots的值25減去1得到24,然後將24這個結果賦值給變數carrots。
4,擴充下,如下:cout<<25;與cout<<"25";有什麼區別?25是數字,在電腦中是以二進位儲存。二進位標記法與電腦記憶體完全對應。在記憶體中,每個單元(位)都可以設定成開或關。0表示關,1表示開。記憶體通常以位元組位單位組織,一個位元組包含8位。所以,一般int類型是4個位元組,就是32位。25有二進位表示是00000000 00000000 00000000 00011001.而對於字串“25”,其實是字元‘2‘、‘5‘、‘\0‘三個字元組成的,單個字元是一個位元組,也就是8位,“25”在電腦中儲存的是00000010 00000101 00000000.那為什麼顯示出來的都是25,是因為cout會根據資料類型,將整數25轉換為字串,然後顯示成25.為什麼要轉換為字串顯示呢?可以理解為,顯示給人看的,就需要轉換為字串。
5,第18行 cout << "Crunch, crunch. Now I have " << carrots << " carrots." << endl; 使用到cout拼接技術。
類簡介:
1,類是使用者定義的一種資料類型。類定義描述的是資料格式及其用法。對象是根據資料格式規範建立的實體。比如:cout是ostream類的一個對象,cin是istream類的一個對象。只不過這兩個對象是內建對象,不需要使用者手動去建立就可以使用。
C++ Primer Plus 6 第二章