c++ 雜篇 未整理

術(shù)語(yǔ)“流”(stream)想要表達(dá)的是,隨著時(shí)間的推移,字符是順序生成或消耗

寫(xiě)入endl的效果是結(jié)束當(dāng)前行,并將與設(shè)備關(guān)聯(lián)的緩沖區(qū)(buffer)中的內(nèi)容刷到設(shè)備中

前綴std::指出名字cout和endl是定義在名為std的命名空間(namespace)中的。命名空間可以幫助我們避免不經(jīng)意的名字定義沖突,以及使用庫(kù)中相同名字導(dǎo)致的沖突。

作用域運(yùn)算符(::)

類(lèi)定義了行為(類(lèi)定義了對(duì)象可以執(zhí)行的所有動(dòng)作)

成員函數(shù)(member function) 是定義為類(lèi)的一部分的函數(shù),有時(shí)也被稱(chēng)為方法(method)。

點(diǎn)運(yùn)算符(.)只能用于類(lèi)類(lèi)型的對(duì)象

調(diào)用運(yùn)算符(())來(lái)調(diào)用一個(gè)函數(shù)。調(diào)用運(yùn)算符是一對(duì)圓括號(hào)

條件(condition)求值結(jié)果為真或假的表達(dá)式。通常用值0表示假,用非零值表示真

數(shù)據(jù)類(lèi)型是程序的基礎(chǔ):它告訴我們數(shù)據(jù)的意義以及我們能在數(shù)據(jù)上執(zhí)行的操作

一個(gè)char的空間應(yīng)確保可以存放機(jī)器基本字符集中的任意字符對(duì)應(yīng)的數(shù)字值。也就是說(shuō),一個(gè)char的大小和一個(gè)機(jī)器字節(jié)一樣。

為了賦予內(nèi)存中某個(gè)地址明確的含義,必須首先知道內(nèi)存在該地址的數(shù)據(jù)的類(lèi)型。類(lèi)型決定了數(shù)據(jù)所占的比特?cái)?shù)以及該如何解釋這些比特的內(nèi)容。

大多數(shù)程序員能夠(也應(yīng)該)對(duì)數(shù)據(jù)類(lèi)型的使用做出限定從而簡(jiǎn)化選擇的過(guò)程。

  • 當(dāng)明確知曉數(shù)值不可能為負(fù)時(shí),選用無(wú)符號(hào)類(lèi)型
  • 使用int執(zhí)行整數(shù)運(yùn)算
  • 在算數(shù)表達(dá)式中不要使用char或bool,因?yàn)閏har在一些機(jī)器上是有符號(hào),另一些機(jī)器上可能沒(méi)有符號(hào)。如果需要使用一個(gè)不大的整數(shù),可以明確指定類(lèi)型是signed char 或者unsigned char
  • 執(zhí)行浮點(diǎn)數(shù)運(yùn)算選double

把一個(gè)布爾值賦值給非布爾類(lèi)型是,初始值為false則結(jié)果為0,初始值為true則結(jié)果為1

當(dāng)我們賦給無(wú)符號(hào)類(lèi)型一個(gè)超出它表示范圍的值時(shí),結(jié)果是初始值對(duì)無(wú)符號(hào)類(lèi)型表示數(shù)值的總數(shù)取模后的余數(shù)。 把 -1賦值給8bit大小的unsigned char所得的結(jié)果是255

計(jì)算機(jī)中數(shù)值按補(bǔ)碼存儲(chǔ)的,-1的原碼是10000001(有符號(hào)8位),補(bǔ)碼(反碼+1):11111111。所以直接賦值給unsigned char, 11111111等于255。

變量提供一個(gè)具名的,可供程序操作的儲(chǔ)存空間。c++中的每個(gè)變量都有其數(shù)據(jù)類(lèi)型,數(shù)據(jù)類(lèi)型決定著變量所占內(nèi)存空間的大小和布局方式、該空間能存儲(chǔ)的值的范圍,以及變量能參與的運(yùn)算。對(duì)c++程序員來(lái)說(shuō),“變量”(variable)和“對(duì)象”(object)一般可以互換使用。

對(duì)象是指一塊能存儲(chǔ)數(shù)據(jù)并具有某種類(lèi)型的內(nèi)存空間

初始化不是賦值,初始化的含義是創(chuàng)建變量時(shí)賦予其一個(gè)初始值,而賦值的含義是把對(duì)象的當(dāng)前值擦除,而以一個(gè)新值來(lái)替代。

如果想聲明一個(gè)變量而非定義它,就在變量名前添加關(guān)鍵字extern,而且不要顯式地初始化變量:
extern int i; //聲明i 而非定義i
extern double pi = 3.1416; // 定義
在函數(shù)體內(nèi)部,如果試圖初始化一個(gè)由extern關(guān)鍵字標(biāo)記的變量,將引發(fā)錯(cuò)誤
變量能且只能被定義一次,但是可以被多次聲明

通常將聲明符寫(xiě)成&d的形式來(lái)定義引用類(lèi)型

int val = 1024;
int &refVal = val;  //refVal指向val (是val的另一個(gè)名字)
int &refVal2; //報(bào)錯(cuò):引用必須被初始化
int &refVal3 = refVal // refVal3綁定到了那個(gè)與refVal綁定的對(duì)象上,這里就是綁定到val上

引用并非對(duì)象,相反的,它只是為一個(gè)已經(jīng)存在的對(duì)象所起的另外一個(gè)名字。
因?yàn)橐帽旧聿皇且粋€(gè)對(duì)象,所以不能定義引用的引用
引用只能綁定在對(duì)象上,而不能與字面值或某個(gè)表達(dá)式的計(jì)算結(jié)果綁定在一起。

指針(pointer)是“指向”(point to)另外一種類(lèi)型的符合類(lèi)型。與引用類(lèi)似,指針也實(shí)現(xiàn)了對(duì)其他對(duì)象的間接訪問(wèn)。然而指針與引用相比又有很多不同點(diǎn)。

  • 指針本身就是一個(gè)對(duì)象,允許對(duì)指針賦值和拷貝,而且在指針的生命周期內(nèi)他可以先后指向幾個(gè)不同的對(duì)象。
  • 指針無(wú)須在定義時(shí)賦初值。和其它內(nèi)置類(lèi)型一樣,在塊作用域內(nèi)定義的指針如果沒(méi)有被初始化,也將擁有一個(gè)不確定的值。

獲取對(duì)象的地址
指針存放某個(gè)對(duì)象的地址,要想獲取該地址,需要使用取地址符(操作符&)

int ival = 42;
int *p = &ival;  // p存放變量ival的地址,或者說(shuō)p是指向變量ival的指針

引用不是對(duì)象,沒(méi)有實(shí)際地址,所以不能定義指向引用的指針

如果指針指向了一個(gè)對(duì)象,則允許使用解引用符(操作符*)來(lái)訪問(wèn)改對(duì)象

int ival =42 ;
int *p = &ival;  // p存放著變量ival的地址,或者說(shuō)p是指向變量ival的指針
cout << *p   // 由符號(hào)*得到指針p所指的對(duì)象,輸出42

*p = 0;  //有符號(hào)*得到指針p所指向的對(duì)象,即可經(jīng)由p為變量ival賦值
cout << *p;   //輸出0

指針和引用都能提供對(duì)其他對(duì)象的間接訪問(wèn),然后在具體實(shí)現(xiàn)細(xì)節(jié)上二者有很大的不同,其中最重要的一點(diǎn)就是引用本身并非一個(gè)對(duì)象。一旦定義了引用,就無(wú)法令其再綁定到另外的對(duì)象,之后每次使用這個(gè)引用都是訪問(wèn)它最初綁定的那個(gè)對(duì)象。

?著作權(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ù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,664評(píng)論 1 51
  • 基本內(nèi)置類(lèi)型 算術(shù)類(lèi)型字符整型布爾值浮點(diǎn)數(shù) 空類(lèi)型(void) 算術(shù)類(lèi)型 帶符號(hào)類(lèi)型和無(wú)符號(hào)類(lèi)型int、short...
    2625K閱讀 3,643評(píng)論 0 1
  • 2.變量和基本類(lèi)型 3.字符串、向量和數(shù)組 4.表達(dá)式 5.語(yǔ)句 2.變量和基本類(lèi)型 c++的算術(shù)類(lèi)型: 一個(gè)ch...
    暮落晴空閱讀 803評(píng)論 0 0
  • 指針是C語(yǔ)言中廣泛使用的一種數(shù)據(jù)類(lèi)型。 運(yùn)用指針編程是C語(yǔ)言最主要的風(fēng)格之一。利用指針變量可以表示各種數(shù)據(jù)結(jié)構(gòu); ...
    朱森閱讀 3,612評(píng)論 3 44
  • Swift1> Swift和OC的區(qū)別1.1> Swift沒(méi)有地址/指針的概念1.2> 泛型1.3> 類(lèi)型嚴(yán)謹(jǐn) 對(duì)...
    cosWriter閱讀 11,632評(píng)論 1 32

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