2020-07-02

學(xué)習(xí)C++的第一天,找個(gè)文檔看看吧


C++學(xué)習(xí)的最基本知識(shí)

(1)進(jìn)入C++

? ? ? ? 注意點(diǎn):?

? ? ?? 1、C++對(duì)大小寫(xiě)敏感,其中編譯器也是對(duì)拼寫(xiě)敏感的;

? ? ?? 2、文件擴(kuò)展名cpp是一種表示C++程序的常用方法;

? ? ?? 3、C++輸入輸出函數(shù)為cin和cout函數(shù),但也可使用printf()和scanf()函數(shù),但要包含常規(guī)C語(yǔ)言的stdio.h文件;

? ?? 4、#include預(yù)處理編譯指令、int main()作為接口的函數(shù)頭、using namespace編譯指令、結(jié)束mian函數(shù)的return函數(shù);

? ? ?? 5、C++中,語(yǔ)句結(jié)束后不能省略分號(hào);

? ? ?? 6、如果編譯器到達(dá)main()函數(shù)末尾時(shí)沒(méi)有遇到返回函數(shù),則認(rèn)為main()函數(shù)以return 0結(jié)尾;

? ? ?? 7、代碼#include <iostream>該編譯指令導(dǎo)致預(yù)處理器將iostream文件的內(nèi)容添加到程序中,這是典型的預(yù)處理器操作:在源代碼被編譯之前,替換或者添加文本;將iostream文件的內(nèi)容添加到程序中這一預(yù)處理器操作涉及程序與外部世界之間的通信。iostream中io指的是輸入和輸出。C++的輸入/輸出方案涉及iostream文件中的多個(gè)定義。#include編譯指令導(dǎo)致iostream文件的內(nèi)容隨著源代碼文件的內(nèi)容一起被發(fā)送給編譯器。實(shí)際上,iostream文件的內(nèi)容將取代程序中的代碼行#include<iostream>。原始文件沒(méi)有被修改,而是將源代碼文件和iostream組合成一個(gè)復(fù)合文件,編譯的下一個(gè)階段將使用該文件。

?? 8、像iostream這樣的文件叫做包含文件——由于它們被包含在其他文件中,也叫頭文件——由于它們被包含在文件的起始處。C++編譯器自帶了很多頭文件,每個(gè)頭文件都支持一組特定的工具。C語(yǔ)言中頭文件使用擴(kuò)展名h,在C++中,對(duì)老式C的頭文件保留了擴(kuò)展名h,即C++也可以使用這種文件,但是C++風(fēng)格的頭文件是沒(méi)有擴(kuò)展名的,有些C頭文件被轉(zhuǎn)換時(shí),會(huì)進(jìn)行重命名,去掉擴(kuò)展名h,并在文件名稱前加上前綴c,如math.h->cmath。有時(shí)C頭文件的C版本和C++版本相同,而有時(shí)新版本做了一些修改。對(duì)于純粹的C++頭文件來(lái)說(shuō),去掉h不只是形式上的改變,沒(méi)有h的頭文件也可以包含名稱空間。

? ? ? 9、如果使用iostream,而不是iostream.h,則應(yīng)使用using namespace std的名稱空間編譯指令來(lái)使iostream中的定義對(duì)程序可用。名稱空間支持是一項(xiàng)C++特性,旨在讓你編寫(xiě)大型程序以及將多個(gè)廠商現(xiàn)有的代碼組合起來(lái)的程序時(shí)更容易,它有助于組織程序。一個(gè)潛在的問(wèn)題是,可能使用兩個(gè)已封裝好的產(chǎn)品,而它們都包含一個(gè)名為wanda()函數(shù),這樣,使用wanda()函數(shù)時(shí),編譯器將不知道指的是哪個(gè)版本,名稱空間讓廠商能夠?qū)⑵洚a(chǎn)品封裝在一個(gè)叫做名稱空間的單元中,這樣就可以使用名稱空間來(lái)指出想使用哪個(gè)廠商的產(chǎn)品。因此,Microflop Industries可以將其定義放到一個(gè)名為Microflop的名稱空間中,這樣其wanda()函數(shù)的全稱為Microflop::wanda();這樣,程序就可以使用名稱空間來(lái)區(qū)分不同的版本了。按這種方式,類、函數(shù)和變量便的是C++編譯器的標(biāo)準(zhǔn)組件,它們現(xiàn)在都被放置在名稱空間std中,這意味著在iostream中定義的用于輸出的cout變量實(shí)際上是std::cout,因此可以省略編譯指令using。

? ? ? 10、對(duì)于cout<<"Come up";語(yǔ)句來(lái)說(shuō),從概念上看,輸出是一個(gè)流,即從程序流出的一系列字符。cout對(duì)象表示這種流,其屬性是在iostream文件中定義的。cout的對(duì)象屬性包含一個(gè)插入運(yùn)算符<<,它可以將其右側(cè)的信息插入到流中。

? ?? 11、endl控制符,其重起一行的作用,和cout一樣,endl也是在頭文件中定義的,且位于名稱空間std中。其中所謂的控制符是像endl一樣對(duì)cout來(lái)說(shuō)有特殊含義的特殊符號(hào)。C++中還提供了一種在輸出中指示換行的舊方法,就是在“/n”,一般將其放在字符串的引號(hào)中,兩者之間的區(qū)別在于,endl確保程序繼續(xù)運(yùn)行前刷新輸出(將其立即顯示在屏幕上),而使用“\n“不能提供這樣的保證,這意味著在有些系統(tǒng)中,有時(shí)可能在你輸入信息后才出現(xiàn)提示。

? 12、源代碼中的標(biāo)記和空白。標(biāo)記是指一行代碼中不可分割的元素,空白則是空格、制表符和回車的統(tǒng)稱。標(biāo)記之間一般用空白來(lái)分開(kāi)。

?? 13、聲明不一定是定義,在C++中盡可能首次使用變量前聲明它,這意味著將導(dǎo)致編譯器為變量分配內(nèi)存空間,而C中所有變量的聲明通常都位于函數(shù)或過(guò)程的開(kāi)始位置。

? ?? 14、對(duì)于類ostream和istream類,從技術(shù)上說(shuō),它們并沒(méi)有被內(nèi)置到C++語(yǔ)言中,而是語(yǔ)言標(biāo)準(zhǔn)指定的類,這些類的定義位于iostream文件中,沒(méi)有被內(nèi)置到編譯器中。

? ? ?15、類描述了可對(duì)類對(duì)象執(zhí)行的所有操作,要對(duì)特定對(duì)象執(zhí)行這些允許的操作,需要給該對(duì)象發(fā)送一條信息。C++提供了兩種發(fā)送消息的方法:一種是使用類方法;另一種方式是重新定義運(yùn)算符,cin和cout采用的就是這種方式。

? ? ?16、例如x=sqrt(6.25),表達(dá)式sqrt(6.25)被稱為函數(shù)調(diào)用,被調(diào)用的函數(shù)叫做被調(diào)用函數(shù),包含函數(shù)調(diào)用的函數(shù)叫做調(diào)用函數(shù)。對(duì)于有返回值的函數(shù)來(lái)說(shuō),函數(shù)執(zhí)行完畢后,語(yǔ)句中的函數(shù)調(diào)用部分將被替換為返回值。因此在使用函數(shù)之前,C++編譯器必須知道函數(shù)的參數(shù)類型和返回值類型。如果缺少這些信息,編譯器將不知道如何解釋返回值。C++提供這種信息的方式就是使用函數(shù)原型語(yǔ)句。例如sqrt()的函數(shù)原型就像這樣:double? sqrt(double);函數(shù)原型之于函數(shù)就像變量聲明至于變量——指出涉及的類型。原型結(jié)尾的分號(hào)表明它是一條語(yǔ)句,這使得它是一個(gè)函數(shù)原型,而不是函數(shù)頭。如果省略分號(hào),編譯器將這行代碼解釋為一個(gè)函數(shù)頭,并要求接著提供定義該函數(shù)的函數(shù)體。但不要混淆函數(shù)原型和函數(shù)定義,原型只描述函數(shù)接口,它描述的是發(fā)送給函數(shù)的信息和返回的信息,而定義中包含了函數(shù)的代碼。C和C++將庫(kù)函數(shù)的這兩項(xiàng)特性分開(kāi)了,庫(kù)函數(shù)中包含了函數(shù)的編譯代碼,而頭文件只包含了原型.

17、函數(shù)變體:有多個(gè)參數(shù),如 double pow(double,double);不接受任何參數(shù),如int rand(void);沒(méi)有返回值,如void bucks(double),這個(gè)函數(shù)是將數(shù)字以美元、美分的格式顯示在屏幕上,由于這個(gè)函數(shù)把值發(fā)送給屏幕,而不是調(diào)用函數(shù),因此不需要返回值,也不能將該函數(shù)調(diào)用放在賦值語(yǔ)句或其他表達(dá)式中。相反,應(yīng)使用一條純粹的函數(shù)調(diào)用語(yǔ)句:bucks(1234.56)。

18、對(duì)于main()函數(shù)來(lái)說(shuō),main函數(shù)是一個(gè)有返回值函數(shù),所以需要使用關(guān)鍵字return來(lái)提供返回值,并結(jié)束函數(shù),這就是為什么在main()函數(shù)結(jié)尾使用語(yǔ)句:return 0;的原因,但是這個(gè)返回值到底是返回到哪里了呢?事實(shí)上,可以將計(jì)算機(jī)操作系統(tǒng)看成是調(diào)用程序,因此main()函數(shù)的返回值并不是返回給程序的其他部分,而是返回給操作系統(tǒng)。

19、讓程序訪問(wèn)名稱空間std的方法有多種,下面是其中4種:(1)將using namespace std;放在函數(shù)定義之前,讓文件中所有函數(shù)都能使用名稱空間std中所有元素;(2)將using namespace std;放在特定的函數(shù)定義中,讓該函數(shù)能夠使用名稱空間std中的所有元素;(3)在特定的函數(shù)中使用類似using std::cout;這樣的編譯指令,而不是using namesapce std;,讓該函數(shù)能夠使用指定的元素,如cout。(4)完全不使用編譯指令using,而在需要使用名稱空間std中的元素時(shí),使用前綴std::,如下所示:std::cout<<" ? ? "<<std::endl。

三、總結(jié)

1、有多種類型的C++語(yǔ)句,包含下述6種:聲明語(yǔ)句、賦值語(yǔ)句、消息語(yǔ)句:將消息發(fā)送給對(duì)象,激發(fā)某種行動(dòng)。、函數(shù)調(diào)用、函數(shù)原型、返回語(yǔ)句。

2、C++提供了兩個(gè)用于處理輸入和輸出的預(yù)定義對(duì)象(cin和cout),它們是istream和ostream類的實(shí)例,這兩個(gè)類是在iostream文件中定義的。為ostream類定義的插入運(yùn)算符(<<)使得將數(shù)據(jù)插入到輸出流成為可能;為istream類定義的抽取運(yùn)算符(>>)能夠從輸入流中抽取信息。cin和cout都是智能對(duì)象,能夠根據(jù)程序上下文自動(dòng)將信息從一種形式轉(zhuǎn)換為另一種形式。

3、C++可以使用大量的C庫(kù)函數(shù),要使用庫(kù)函數(shù),應(yīng)當(dāng)包含提供該函數(shù)原型的頭文件

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容