日韩av黄I国产麻豆传媒I国产91av视频在线观看I日韩一区二区三区在线看I美女国产在线I麻豆视频国产在线观看I成人黄色短片

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程语言 > c/c++ >内容正文

c/c++

C++primer 第 2 章 变量和基本类型

發(fā)布時間:2023/12/13 c/c++ 76 豆豆
生活随笔 收集整理的這篇文章主要介紹了 C++primer 第 2 章 变量和基本类型 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

2.1 基本內(nèi)置類型

  • 算術(shù)類型(arithmetictype)和空類型(void)在內(nèi)的基本數(shù)據(jù)類型。其中算術(shù)類型包含了字符、整型數(shù)、布爾值和浮點數(shù)。空類型不對應具體的值,僅用于一些特殊的場合,例如最常見的是,當函數(shù)不返回任何值時使用空類型作為返回類型。

2.1.1算術(shù)類型

  • 算術(shù)類型分為兩類:整型(integraltype,包括字符和布爾類型在內(nèi))和浮點型。算術(shù)類型的尺寸(也就是該類型數(shù)據(jù)所占的比特數(shù))在不同機器上有所差別。表2.1列出了C++標準規(guī)定的尺寸的最小值,同時允許編譯器賦予這些類型更大的尺寸。某一類型所占的比特數(shù)不同,它所能表示的數(shù)據(jù)范圍也不一樣

  • 類型char和類型signed char并不一樣。盡管字符型有三種,但 是字符的表現(xiàn)形式卻只有兩種:帶符號的和無符號的。類型char實際上會表現(xiàn)為上述兩 種形式中的一種,具體是哪種由編譯器決定。
  • 無符號類型中所有比特都用來存儲值,例如,8比特的unsigned? char可以表示0至255區(qū)間內(nèi)的值。C++標準并沒有規(guī)定帶符號類型應如何表示,但是約定了在表示范圍內(nèi)正值和負值的
    量應該平衡。因此,8比特的signed char理論上應該可以表示-127至127區(qū)間內(nèi)的值,大多數(shù)現(xiàn)代計算機將實際的表示范圍定為-128至127。

如何選擇類型

  • ?當明確知曉數(shù)值不可能為負時,選用無符號類型。
  • 使用int執(zhí)行整數(shù)運算。在實際應用中,short常常顯得太小而long-般和int有一樣的尺寸。如果你的數(shù)值超過了int的表示范圍,選用longlong。
  • 在算術(shù)表達式中不要使用char或bool,只有在存放字符或布爾值時才使用它們。因為類型char在一些機器上是有符號的,而在另一些機器上又是無符號的,所以如果使用char進行運算特別容易出問題。如果你需要使用一個不大的整數(shù),那么明確指定它的類型是signed char或者unsigned char。
  • 執(zhí)行浮點數(shù)運算選用double,這是因為float通常精度不夠而且雙精度浮點數(shù)和單精度浮點數(shù)的計算代價相差無幾。事實上,對于某些機器來說,雙精度運算甚至比單精度還快。long double提供的精度在一般情況下是沒有必要的,況且它帶來的運行時消耗也不容忽視。

類型轉(zhuǎn)化

  • 當我們把一個非布爾類型的算術(shù)值賦給布爾類型時,初始值為0則結(jié)果為false,否則結(jié)果為true
  • 當我們把一個布爾值賦給非布爾類型時,初始值為false則結(jié)果為0,初始值為true則結(jié)果為1
  • 當我們把一個浮點數(shù)賦給整數(shù)類型時,進行了近似處理。結(jié)果值將僅保留浮點數(shù)中小數(shù)點之前的部分。
  • 當我們把一個整數(shù)值賦給浮點類型時,小數(shù)部分記為0。如果該整數(shù)所占的空間超過了浮點類型的容量,精度可能有損失。
  • 我們賦給無符號類型一個超出它表示范圍的值時,結(jié)果是初始值對無符號類型表示數(shù)值總數(shù)取模后的余數(shù)。例如,8比特大小的unsigned char可以表示0至255區(qū)間內(nèi)的值,如果我們賦了一個區(qū)間以外的值,則實際的結(jié)果是該值對256取模后所得的余數(shù)。因此,把-1賦給8比特大小的unsigned char所得的結(jié)果是255。
  • 當我們賦給帶符號類型一個超出它表示范圍的值時,結(jié)果是未定義的(undefined)此時,程序可能繼續(xù)工作、可能崩潰,也可能生成垃圾數(shù)據(jù)。

2.1.3字而值常量

  • 一個形如42的值被稱作字面值常量(literal),這樣的值一望而知。每個字面值常量都對應一種數(shù)據(jù)類型,字面值常量的形式和值決定了它的數(shù)據(jù)類型。

  • 注意,如果反斜線'后面跟著的八進制數(shù)字超過3個,只有前3個數(shù)字與'構(gòu)成轉(zhuǎn)義序列。
  • 例如,"\1234"表示2個字符,即八進制數(shù)123對應的字符以及字符4。相反,\x要用到后面跟著的所有數(shù)字,例如,"\xl234"表示一個16位的字符,該字符由這4個十六進制數(shù)所對應的比特唯一確定。因為大多數(shù)機器的char型數(shù)據(jù)占8位,所以上面這個例子可能會報錯。一般來說,超過8位的十六進制字符都是與表2.2中某個前綴作為開頭的擴展字符集一起使用的。

  • 對于一個整型字面值來說,我們能分別指定它是否帶符號以及占用多少空間。如果后綴中有U,則該字面值屬于無符號類型,也就是說,以U為后綴的十進制數(shù)、八進制數(shù)或十六進缶I擻都將從unsigned int、unsigned long和unsigned long long中選擇能匹配的空間最小的一個作為其數(shù)據(jù)類型。如果后綴中有L,則字面值的類型至少是long;
  • 如果后綴中有LL,則字面值的類型將是long long和unsigned long long中的一種。
  • 顯然我們可以將U與L或LL合在一起使用。例如,以UL為后綴的字面值的數(shù)據(jù)類型將根據(jù)具體數(shù)值情況或者取unsigned long,或者取unsigned long long

2.2 變量

  • 變量定義的基本形式是:首先是類型說明符(typespecifier),隨后緊跟由一個或多個變量名組成的列表,其中變量名以逗號分隔,最后以分號結(jié)束。列表中每個變量名的類型都由類型說明符指定,定義時還可以為一個或多個變量賦初值:

  • 初始化不是賦值,初始化的含義是創(chuàng)建變量時賦予其一個初始值,而賦值的含篇點義是把對象的當前值擦除,而以一個新值來替代

列表初始化

  • C++語言定義了初始化的好幾種不同形式,這也是初始化問題復雜性體現(xiàn)。例如,要想定義一個名為units_sold的int變量并初始化為0,以下的4條語句都可以做到這一點:
  • int units_sold = 0;
  • int units_sold = {0};
  • int units_sold{0};
  • int units_sold(0);
  • 用花括號來初始化變量得到了全面應用,而在此之前,這種初始化的形式僅在某些受限的場合下才能使用,這種方式叫做列表初始化
  • 無論是初始化對象還是某些時候為對象賦新值,都可以使用這樣一組由花括號括起來的初始值

默認初始化

  • 如果定義變量時沒有指定初值,則變量被默認初始化(defaultinitialized),此時變量被賦予了“默認值”。默認值到底是什么由變量類型決定,同時定義變量的位置也會對此有影響。
  • 定義于函數(shù)體內(nèi)的內(nèi)置類型的對象如果沒有初始化,則其值未定義。類的對象如果沒有顯式地初始化,則其值由類確定:

2 .2 .2 變量聲明和定義的關(guān)系

  • 聲明(declaration)使得名字為程序所知,一個文件如果想使用別處定義的名字則必須包含對那個名字的聲明。而定義(definition)負責創(chuàng)建與名字關(guān)聯(lián)的實體。
  • 變量聲明規(guī)定了變量的類型和名字,在這一點上定義與之相同。但是除此之外,定義還申請存儲空間,也可能會為變量賦一個初始值。
  • 如果想聲明一個變量而非定義它,就在變量名前添加關(guān)鍵字extern,而且不要顯式地初始化變量:
  • extern int i; / / 聲 明 i 而非定義i
  • int j; / / 聲明并定義j
  • 任何包含了顯式初始化的聲明即成為定義。我們能給由extern 關(guān)鍵字標記的變量賦 一個初始值,但是這么做也就抵消了extern 的作用。extern語句如果包含初始值就不再是聲明,而變成定義了:
  • extern double pi = 3.1416; // 定義? 在函數(shù)體內(nèi)部,如果試圖初始化一個由extern關(guān)鍵字標記的變量,將引發(fā)錯誤
  • 變量能且只能被定義一次,但是可以被多次聲明
  • 聲明和定義的區(qū)別看起來也許微不足道,但實際上卻非常重要。如果要在多個文件中使用同一個變量,就必須將聲明和定義分離。此時,變量的定義必須出現(xiàn)在且只能出現(xiàn)在一個文件中,而其他用到該變量的文件必須對其進行聲明,卻絕對不能重復定義。

2 .2 .3 標識符

  • C++的標識符(identifier)由字母、數(shù)字和下畫線組成,其中必須以字母或下畫線開 頭。標識符的長度沒有限制,但是對大小寫字母敏感:
  • 用戶自定義的標識符中不能連續(xù)出現(xiàn)兩個下畫線,也不能以下畫線緊連大寫字母開頭。
  • 此外,定義在函數(shù)體外的標識符不能以下畫線開頭。

變量命名規(guī)范

2 .2 .4 名字的作用域

  • 不論是在程序的什么位置,使用到的每個名字都會指向一個特定的實體:變量、函數(shù)類型等。然而,同一個名字如果出現(xiàn)在程序的不同位置,也可能指向的是不同實體
  • 作用域(scope)是程序的一部分,在其中名字有其特定的含義。C++語言中大多數(shù)作 用域都以花括號分隔。
  • 同一個名字在不同的作用域中可能指向不同的實體。名字的有效區(qū)域始于名字的聲明語句,以聲明語句所在的作用域末端為結(jié)束。

  • 作用域能彼此包含,被包含(或者說被嵌套)的作用域稱為內(nèi)層作用域(innerscope), 包含著別的作用域的作用域稱為外層作用域 (outer scope)

  • 使用作用域操作符(參見1.2節(jié),第7頁)來覆蓋默認的作用域規(guī)則,因為全局作用域本身并沒有名字,所以當作用域操作符的左側(cè)為空時,向全局作用域發(fā)出請求獲取作用域操作符右側(cè)名字對應的變量。結(jié)果是,第三條輸出語句使用全局變量reused,輸出420。

2.3 復合類型

  • 復合類型(compound type)是指基于其他類型定義的類型。C++語言有幾種復合類型, 本章將介紹其中的兩種:引用和指針
  • 一條聲明語句由一個基本數(shù)據(jù)類型(basetype)和緊隨其后的一個聲明符(declarator)列表組成。每個聲明符命名了一個變量并指定該變量為與基本數(shù)據(jù)類型有關(guān)的某種類型。

2 .3 .1 引用

  • 引 用 (reference)為對象起了另外一個名字,引用類型引用(refers to )另外一種類型。 通過將聲明符寫成&d的形式來定義引用類型,其中d 是聲明的變量名:
  • int ival = 1024;
  • int &refVal = ival;?// refVal指 向 ival (是 ival的另一個名字)?
  • int &refVal2; / / 報錯:引用必須被初始化
  • 在初始化變量時,初始值會被拷貝到新建的對象中。然而定義引用時,程序把引用和它的初始值綁定(bind)在一起,而不是將初始值拷貝給引用。一旦初始化完成,引用將 和它的初始值對象一直綁定在一起。因為無法令引用重新綁定到另外一個對象,因此引用必須初始化。
  • 引用并非對象,相反的,它只是為一個已經(jīng)存在的對象所起的另外一個名字

2.3.2 指針

  • 指針(pointer)是“指向(pointto)”另外一種類型的復合類型。與引用類似,指針也實現(xiàn)了對其他對象的間接訪問。然而指針與引用相比又有很多不同點。
  • 其一,指針本身就是一個對象,允許對指針賦值和拷貝,而且在指針的生命周期內(nèi)它可以先后指向幾個不同的對象。其二,指針無須在定義時賦初值。和其他內(nèi)置類型一樣,在塊作用域內(nèi)定義的指針如果沒有被初始化,也將擁有一個不確定的值。
  • 指針存放某個對象的地址,要想獲取該地址,需要使用取地址符(操作符&)

空指針

  • 空指針(null pointer) 不指向任何對象,在試圖使用一個指針之前代碼可以首先檢查 它是否為空。以下列出幾個生成空指針的方法:
  • int *pl =?nullptr; / / 等 價 于 int *pl =0;
  • int *p2 =0; / / 直接將p2 初始化為字面常量0
  • int *p3 = NULL; / / 等 價 于 int *p3 = o;?//需 要 首 先 #include cstdlib
  • 得到空指針最直接的辦法就是用字面值nullptor來初始化指針,這也是C++11新標準剛 剛引入的一種方法。nullptor是一種特殊類型的字面值,它可以被轉(zhuǎn)換成任意其他的指針類型。另一種辦法就如對p2 的定義一樣,也可以通過將指針初始化為字面值0 來生成空指針
  • 預處理器是運行于編譯過程之前的一段程序就可以了。預處理變量不屬于命名空間s td ,它由預處理 器負責管理,因此我們可以直接使用預處理變量而無須在前面加上s td ::
  • 當用到一個預處理變量時,預處理器會自動地將它替換為實際值,因此用NULL初始化指針和用0 初始化指針是一樣的。在新標準下,現(xiàn)在的C++程序最好使用nullptor, 同時盡量避免使用NULL。把 i n t 變量直接賦給指針是錯誤的操作,即使i n t 變量的值恰好等于0 也不行

  • 有時候要想搞清楚一條賦值語句到底是改變了指針的值還是改變了指針所指對象的值不太容易,最好的辦法就是記住賦值永遠改變的是等號左側(cè)的對象。當寫出如下語句時,
  • pi = &ival; // pi的值被改變,現(xiàn)在 pi指向了 ival,意思是為pi賦一個新的值,也就是改變了那個存放在pi內(nèi)的地址值。相反的,如果寫出如下語句
  • *pi = 0; // ival的值被改變,指 針 pi并沒有改變,則*pi(也就是指針pi指向的那個對象)發(fā)生改變。

void* 指針

  • void*是一種特殊的指針類型,可用于存放任意對象的地址。一個void*指針存放著 一個地址,這一點和其他指針類似。不同的是,我們對該地址中到底是個什么類型的對象并不了解:
  • 利用void*指針能做的事兒比較有限:拿它和別的指針比較、作為函數(shù)的輸入或輸出,或 者賦給另外一個void*指針。不能直接操作void*指針所指的對象,因為我們并不知道 這個對象到底是什么類型,也就無法確定能在這個對象上做哪些操作。

2.3.3理解復合類型的聲明擊

  • 如前所述,變量的定義包括一個基本數(shù)據(jù)類型(base type)和一組聲明符。在同一條定義語句中,雖然基本數(shù)據(jù)類型只有一個,但是聲明符的形式卻可以不同。也就是說,一條定義語句可能定義出不同類型的變量;
  • int i=1024,*p=&i,&r=i;??//i是一個int型的數(shù),p是一個int型指針,r是一個int型引用

指向指針的指針

  • 一般來說,聲明符中修飾符的個數(shù)并沒有限制。當有多個修飾符連寫在一起時,按照其邏輯關(guān)系詳加解釋即可。以指針為例,指針是內(nèi)存中的對象,像其他對象一樣也有自己的地址,因此允許把指針的地址再存放到另一個指針當中。

指向指針的引用

  • 引用本身不是一個對象,因此不能定義指向引用的指針。但指針是對象,所以存在對指針的引用:

  • 要理解r 的類型到底是什么,最簡單的辦法是從右向左閱讀r 的定義。離變量名最近的符 號(此例中是& r 的符號&)對變量的類型有最直接的影響,因此r 是一個引用。聲明符的 其余部分用以確定r 引用的類型是什么,此例中的符號*說明r 引用的是一個指針。最后, 聲明的基本數(shù)據(jù)類型部分指出r 引用的是一個int指針

2.4 const限定符

  • 有時我們希望定義這樣一種變量,它的值不能被改變。例如,用一個變量來表示緩沖區(qū)的大小。使用變量的好處是當我們覺得緩沖區(qū)大小不再合適時,很容易對其進行調(diào)整。另一方面,也應隨時警惕防止程序一不小心改變了這個值。為了滿足這一要求,可以用關(guān)鍵字const對變量的類型加以限定:
  • const int bufSize = 512; // 輸入緩沖區(qū)大小
  • 這樣就把bufSize定義成了一個常量。任何試圖為bufSize賦值的行為都將引發(fā)錯誤:
  • bufSize = 512; / / 錯誤:試 圖 向 const對象寫值,因為const對象一旦創(chuàng)建后其值就不能再改變,所以const對象必須初始化。一如既往, 初始值可以是任意復雜的表達式:

初始化和const

  • 正如之前反復提到的,對象的類型決定了其上的操作。與非const類型所能參與的操作相比,const類型的對象能完成其中大部分,但也不是所有的操作都適合。主要的限制就是只能在const類型的對象上執(zhí)行不改變其內(nèi)容的操作。例如,const int和普通的int一樣都能參與算術(shù)運算,也都能轉(zhuǎn)換成一個布爾值,等等。在不改變const對象的操作中還有一種是初始化,如果利用一個對象去初始化另外一個對象,則它們是不是const都無關(guān)緊要:
  • int i=42;const int ci=i;int j=ci;//正確:i的值被拷貝給了ci//正確:ci的值被拷貝給了j
  • 盡管c i 是整型常量,但無論如何c i 中的值還是一個整型數(shù)。c i 的常量特征僅僅在執(zhí)行 改變c i 的操作時才會發(fā)揮作用。當用c i 去初始化j 時,根本無須在意ci 是不是一個常 量。拷貝一個對象的值并不會改變它,一旦拷貝完成,新的對象就和原來的對象沒什么關(guān)系了。
  • 默認狀態(tài)下,const對象僅在文件內(nèi)有效,當以編譯時初始化的方式定義一個const對象時,就如對bufSize的定義一樣:
  • const對象被設定為僅在文件內(nèi)有效。當 多個文件中出現(xiàn)了同名的const變量時,其實等同于在不同文件中分別定義了獨立的變量。?
  • 某些時候有這樣一種const變量,它的初始值不是一個常量表達式,但又確實有必 要在文件間共享。這種情況下,我們不希望編譯器為每個文件分別生成獨立的變量。相反,我們想讓這類const對象像其他(非常量)對象一樣工作,也就是說,只在一個文件中 定義const.而在其他多個文件中聲明并使用它。 解決的辦法是,對于const變量不管是聲明還是定義都添加extern關(guān)鍵字,這樣 只需定義一次就可以了:

2.4.1 const 的引用

  • 可以把引用綁定到const對象上,就像綁定到其他對象上一樣,我們稱之為對常量的引用(reference to const)。與普通引用不同的是,對常量的引用不能被用作修改它所綁定的對象:
  • const int ci = 1024;
  • const int &r 1 = ci; / / 正確:引用及其對應的對象都是常量
  • rl = 42;??/ / 錯誤:rl是對常量的引用?
  • int &r2 = ci;/ 錯誤:試圖讓一個非常量引用指向一個常量對象
  • 因為不允許直接為c i 賦值,當然也就不能通過引用去改變c i。因此,對 r2 的初始化是錯誤的。假設該初始化合法,則可以通過r2 來改變它引用對象的值,這顯然是不正確的。

初始化和對const的引用

  • 2.3.1節(jié)(第46頁)提到,引用的類型必須與其所引用對象的類型一致,但是有兩個例外。第一種例外情況就是在初始化常量引用時允許用任意表達式作為初始值,只要該表達式的結(jié)果能轉(zhuǎn)換成(參見2.1.2節(jié),第32頁)引用的類型即可。尤其,允許為一個常量引用綁定非常量的對象、字面值,甚至是個一般表達式:
  • int i=42;
  • const int &r1 = i;//允許將const int&綁定到一個普通int對象上
  • const int &r2 = 42;//正確:r2是一個常量引用
  • const int &r3 = rl*2;://正確 r3是一個常量引用
  • in t&r4 = rl*2;? //錯誤:r4是一個普通的非常量引用
  • 要想理解這種例外情況的原因,最簡單的辦法是弄清楚當一個常量引用被綁定到另外一種類型上時到底發(fā)生了什么:
  • double dval=3.14; const int &ri=dval;此處ri引用了一個int型的數(shù)。對ri的操作應該是整數(shù)運算,但dval卻是一個雙精度浮點數(shù)而非整數(shù)。因此為了確保讓ri綁定一個整數(shù),編譯器把上述代碼變成了如下形式:const int temp=dval;//由雙精度浮點數(shù)生成一個臨時的整型常量? ? const int &ri=temp;//讓ri綁定這個臨時量
  • 在這種情況下,ri綁定了一個臨時量(temporary)對象。所謂臨時量對象就是當編譯器需要一個空間來暫存表達式的求值結(jié)果時臨時創(chuàng)建的一個未命名的對象
  • C++程序員們常常把臨時量對象簡稱為臨時量。
  • 接下來探討當ri不是常量時,如果執(zhí)行了類似于上面的初始化過程將帶來什么樣的后果。如果ri不是常量,就允許對ri賦值,這樣就會改變ri所引用對象的值。注意,此時綁定的對象是一個臨時量而非dval。程序員既然讓ri引用dval,就肯定想通過ri改變dval的值,否則干什么要給ri賦值呢?如此看來,既然大家基本上不會想著把引用綁定到臨時量上,C++語言也就把這種行為歸為非法。

對const的引用可能引用一個并非const的對象

  • 必須認識到,常量引用僅對引用可參與的操作做出了限定,對于引用的對象本身是不是一個常量未作限定。因為對象也可能是個非常量,所以允許通過其他途徑改變它的值:

  • r2綁定(非常量)整數(shù)i是合法的行為。然而,不允許通過r2修改i的值。盡管如此,i的值仍然允許通過其他途徑修改,既可以直接給i賦值,也可以通過像r1一樣綁定到i的其他引用來修改。

2.4.2指針和const

  • 與引用一樣,也可以令指針指向常量或非常量。類似于常量引用(參見2.4.1節(jié),第54頁),指向常量的指針(pointertoconst)不能用于改變其所指對象的值。要想存放常量對象的地址,只能使用指向常量的指針:

  • 2.3.2節(jié) (第 47頁)提到,指針的類型必須與其所指對象的類型一致,但是有兩個例外。第一種例外情況是允許令一個指向常量的指針指向一個非常量對象
  • double dval = 3.14; // dval是一個雙精度浮點數(shù),它的值可以改變
  • cptr = &dval; / / 正確:但是不能通過cptr改變 dval的值
  • 和常量引用一樣,指向常量的指針也沒有規(guī)定其所指的對象必須是一個常量。所謂指向常量的指針僅僅要求不能通過該指針改變對象的值,而沒有規(guī)定那個對象的值不能通過其他途徑改變。所謂指向常量的指針或引用,不過是指針或引用“自作多情”罷了,它們覺得自己指向了常量,所以自覺地不去改變所指對象的值。

const指針

  • 指針是對象而引用不是,因此就像其他對象類型一樣,允許把指針本身定為常量。常量指針(constpointer)必須初始化,而且一旦初始化完成,則它的值(也就是存放在指針中的那個地址)就不能再改變了。把*放在const關(guān)鍵字之前用以說明指針是一個常量,這樣的書寫形式隱含著一層意味,即不變的是指針本身的值而非指向的那個值:也就是我指向了你,一輩子就認定了你,但是你會變,變得很陌生

  • 如同2.3.3節(jié)(第52頁)所講的,要想弄清楚這些聲明的含義最行之有效的辦法是從右向左閱讀。此例中,離curErr最近的符號是const,意味著curErr本身是一個常量對象,對象的類型由聲明符的其余部分確定。聲明符中的下一個符號是*,意思是curErr是一個常量指針。最后,該聲明語句的基本數(shù)據(jù)類型部分確定了常量指針指向的是一個int對象。與之相似,我們也能推斷出,pip是一個常量指針,它指向的對象是一個雙精度浮點型常量。
  • 指針本身是一個常量并不意味著不能通過指針修改其所指對象的值,能否這樣做完全依賴于所指對象的類型。例如,pip是一個指向常量的常量指針,則不論是pip所指的對象值還是pip自己存儲的那個地址都不能改變。相反的,curErr指向的是一個一般的非常量整數(shù),那么就完全可以用curErr去修改errNumb的值

2.4.3頂層const

  • 如前所述,指針本身是一個對象,它又可以指向另外一個對象。因此,指針本身是不是常量以及指針所指的是不是一個常量就是兩個相互獨立的問題。用名詞頂層const表示指針本身是個常量,而用名詞底層const表示指針所指的對象是一個常量
  • 更一般的,頂層const可以表示任意的對象是常量,這一點對任何數(shù)據(jù)類型都適用,如算術(shù)類型、類、指針等。底層const則與指針和引用等復合類型的基本類型部分有關(guān)。比較特殊的是,指針類型既可以是頂層const也可以是底層const,這一點和其他類型相比區(qū)別明顯:

  • const int *p2 = &ci;? const int 表示我要存儲的變量的類型是const int類型的,因此可以指向ci,ci是const int類型的
  • const int * const p3 = p2; / / 靠右的 const 是頂層 const,靠左的是底層
  • const const int &r = ci; / / 用于聲明引用的const都是底層const
  • 當執(zhí)行對象的拷貝操作時,常量是頂層const還是底層const區(qū)別明顯。其中,頂 層const不受什么影響:
  • i = ci; / / 正確:拷貝 ci的值,ci是一個頂層const, 對此操作無影響? ?單純拷貝數(shù)值
  • p2 = p3; / / 正確:p2和 p3指向的對象類型相同,p3頂層 const的部分不影響
  • 執(zhí)行拷貝操作并不會改變被拷貝對象的值,因此,拷入和拷出的對象是否是常量都沒什么影響。
  • 另一方面,底層const的限制卻不能忽視。當執(zhí)行對象的拷貝操作時,拷入和拷出的對象必須具有相同的底層const資格,或者兩個對象的數(shù)據(jù)類型必須能夠轉(zhuǎn)換。一般來說,非常量可以轉(zhuǎn)換成常量,反之則不行:

  • p3既是頂層const也是底層const,拷貝p3時可以不在乎它是一個頂層const,但是必須清楚它指向的對象得是一個常量。因此,不能用p3去初始化p,因為p指向的是一個普通的(非常量)整數(shù)。另一方面,p3的值可以賦給p2,是因為這兩個指針都是底層const,盡管p3同時也是一個常量指針(頂層const),僅就這次賦值而言不會有什么影響

2.4.4 constexpr和常量表達式

  • 常量表達式(const expression)是指值不會改變并且在編譯過程就能得到計算結(jié)果的表達式。顯然,字面值屬于常量表達式,用常量表達式初始化的const對象也是常量表達式。后面將會提到,C++語言中有幾種情況下是要用到常量表達式的。
  • 一個對象(或表達式)是不是常量表達式由它的數(shù)據(jù)類型和初始值共同決定,例如
  • const int max_files = 20; // max_files 是常量表達式
  • const int limit = max_files + 1; // limit 是常量表達式
  • int staff_size = 27; // staff_size 不是常量表達式
  • const int sz = get_size () ; // sz 不是常量表達式
  • 盡管staff_size的初始值是個字面值常量,但由于它的數(shù)據(jù)類型只是一個普通int而非const int,所以它不屬于常量表達式。另一方面,盡管sz本身是一個常量,但它的具體值直到運行時才能獲取到,所以也不是常量表達式

constexpr變量

  • 在一個復雜系統(tǒng)中,很難(幾乎肯定不能)分辨一個初始值到底是不是常量表達式。
  • 當然可以定義一個const變量并把它的初始值設為我們認為的某個常量表達式,但在實際使用時,盡管要求如此卻常常發(fā)現(xiàn)初始值并非常量表達式的情況。可以這么說,在此種情況下,對象的定義和使用根本就是兩回事兒。
  • C++11新標準規(guī)定,允許將變量聲明為constexpr類型以便由編譯器來驗證變量的值是否是一個常量表達式。聲明為constexpr的變量一定是一個常量,而且必須用常量表達式初始化:
  • constexpr int mf = 20; // 20 是常量表達式
  • constexpr int limit = mf + 1; // mf + 1 是常量表達式
  • constexpr int sz = size () ; // 只有當 size 是一個 constexpr 函數(shù)時,才是一條正確的聲明語句
  • 盡管不能使用普通函數(shù)作為constexpr變量的初始值,但是正如6.5.2節(jié)(第214頁)將要介紹的,新標準允許定義一種特殊的constexpr函數(shù)。這種函數(shù)應該足夠簡單以使得編譯時就可以計算其結(jié)果,這樣就能用constexpr函數(shù)去初始化constexpr變量了。
  • 一般來說, 如果你認定變量是一個常量表達式,那就把它聲明成constexpr類型

字面值類型

  • 常量表達式的值需要在編譯時就得到計算,因此對聲明constexpr時用到的類型必須有所限制。因為這些類型一般比較簡單,值也顯而易見、容易得到,就把它們稱為“字面值類型
  • 到目前為止接觸過的數(shù)據(jù)類型中,算術(shù)類型、引用和指針都屬于字面值類型自定義類Sales_item、IO庫、string類型則不屬于字面值類型,也就不能被定義成constexpr。其他一些字面值類型將在7.5.6節(jié)(第267頁)和19.3節(jié)(第736頁)介紹。盡管指針和引用都能定義成constexpr,但它們的初始值卻受到嚴格限制。一個constexpr指針的初始值必須是nullptr或者0,或者是存儲于某個固定地址中的對象。6.1.1節(jié)(第184頁)將要提到,函數(shù)體內(nèi)定義的變量一般來說并非存放在固定地址中,
  • 因此constexpr指針不能指向這樣的變量。相反的,定義于所有函數(shù)體之外的對象其地址固定不變,能用來初始化constexpr指針。同樣是在6.1.1節(jié)(第185頁)中還將提到,允許函數(shù)定義一類有效范圍超出函數(shù)本身的變量,這類變量和定義在函數(shù)體之外的變量一樣也有固定地址。因此,constexpr引用能綁定到這樣的變量上,constexpr指針也能指向這樣的變量。

指針和constexpr

  • 必須明確一點,在constexpr聲明中如果定義了一個指針,限定符constexpr僅對指針有效,與指針所指的對象無關(guān)
  • const int *p = nullptr; // p 是一個指向整型常量的指針
  • constexpr int *q = nullptr; // q 是一個指向整數(shù)的常量指針
  • p 和 q 的類型相差甚遠,p 是一個指向常量的指針,而 q 是一個常量指針,其中的關(guān)鍵在 于 constexpr把它所定義的對象置為了頂層const (參見2.4.3節(jié),第 57頁)。 與其他常量指針類似,constexpr指針既可以指向常量也可以指向一個非常量

2 . 5 處理類型

  • 隨著程序越來越復雜,程序中用到的類型也越來越復雜,這種復雜性體現(xiàn)在兩個方面。一是一些類型難于“拼寫",它們的名字既難記又容易寫錯,還無法明確體現(xiàn)其真實目的和含義。二是有時候根本搞不清到底需要的類型是什么,程序員不得不回過頭去從程序的上下文中尋求幫助。

2 .5 .1 類型別名

  • 類型別名(type alias)是一個名字,它是某種類型的同義詞。使用類型別名有很多好處,它讓復雜的類型名字變得簡單明了、易于理解和使用,還有助于程序員清楚地知道使用該類型的真實目的。
  • 有兩種方法可用于定義類型別名。傳統(tǒng)的方法是使用關(guān)鍵字typedef:
  • type def double wages; //wages 是 double 的同義詞
  • typedef wages base, *p; //base 是 double 的同義詞,p 是 double*的同義詞
  • 其中,關(guān)鍵字typedef作為聲明語句中的基本數(shù)據(jù)類型(參見2.3節(jié),第 45頁)的一部分出現(xiàn)。含有typedef的聲明語句定義的不再是變量而是類型別名。和以前的聲明語句一樣,這里的聲明符也可以包含類型修飾,從而也能由基本數(shù)據(jù)類型構(gòu)造出復合類型來。
  • 新標準規(guī)定了一種新的方法,使用別名聲明(alias declaration)來定義類型的別名:
  • using SI = Sales_item; // SI 是 Sales_item的同義詞
  • 這種方法用關(guān)鍵字using作為別名聲明的開始,其后緊跟別名和等號,其作用是把等號 左側(cè)的名字規(guī)定成等號右側(cè)類型的別名。類型別名和類型的名字等價,只要是類型的名字能出現(xiàn)的地方,就能使用類型別名:
  • wages hourly, weekly; // 等價于 double hourly、weekly;
  • SI item; // 等價于 Sales_item item

指針、常量和類型別名

  • 如果某個類型別名指代的是復合類型或常量,那么把它用到聲明語句里就會產(chǎn)生意想不到的后果。例如下面的聲明語句用到了類型pstring ,它實際上是類型char*的別名:
  • typedef char *pstring; const pstring cstr = 0; // cstr是指向 char 的常量指針
  • const pstring *ps; // ps是一個指針,它的對象是指向char的常量指針
  • 上述兩條聲明語句的基本數(shù)據(jù)類型都是const pstring ,和過去一樣,const是對給定類型的修飾。pstring實際上是指向char的指針,因此,const pstring就是指向char的常量指針,而非指向常量字符的指針。 遇到一條使用了類型別名的聲明語句時,人們往往會錯誤地嘗試把類型別名替換成它本來的樣子,以理解該語句的含義:
  • const char *cstr = 0; // 是對 const pstring cstr 的錯誤理解
  • 再強調(diào)一遍:這種理解是錯誤的。聲明語句中用到pstring時,其基本數(shù)據(jù)類型是指針。 可是用char*重寫了聲明語句后,數(shù)據(jù)類型就變成了 char, *成為了聲明符的一部分。 這樣改寫的結(jié)果是,const char成了基本數(shù)據(jù)類型。前后兩種聲明含義截然不同,前者聲明了一個指向char的常量指針,改寫后的形式則聲明了一個指向const char的指針。

2.5.2 auto類型說明符?

  • 編程時常常需要把表達式的值賦給變量,這就要求在聲明變量的時候清楚地知道表達式的類型。然而要做到這一點并非那么容易,有時甚至根本做不到。為了解決這個問題,C++11新標準引入了auto類型說明符,用它就能讓編譯器替我們?nèi)シ治霰磉_式所屬的類型。和原來那些只對應一種特定類型的說明符(比如double) 不同,auto 讓編譯器通過初始值來推算變量的類型。顯然,auto 定義的變量必須有初始值:
  • / / 由 vail和 val2 相加的結(jié)果可以推斷出item的類型
  • auto item = vail + val2; // item初始化為vail和 val2 相加的結(jié)果
  • 此處編譯器將根據(jù)vail和val2相加的結(jié)果來推斷item的類型。如果vail和val2是類Sales_ item (參 見 1.5節(jié),第 17頁)的對象,則 ite m 的類型就是Sales_ item ;
  • 如果這兩個變量的類型是double ,則item的類型就是double ,以此類推。 使用auto。也能在一條語句中聲明多個變量。因為一條聲明語句只能有一個基本數(shù)據(jù)類型,所以該語句中所有變量的初始基本數(shù)據(jù)類型都必須一樣:
  • auto i = 0, *p = &i; / / 正確:i 是整數(shù)、p 是整型指針 auto sz = 0, pi = 3.14; // 錯誤:sz 和 pi 的類型不一致

復合類型、常量和auto

  • 編譯器推斷出來的auto。類型有時候和初始值的類型并不完全一樣,編譯器會適當?shù)馗淖兘Y(jié)果類型使其更符合初始化規(guī)則。首先,正如我們所熟知的,使用引用其實是使用引用的對象,特別是當引用被用作初始值時,真正參與初始化的其實是引用對象的值。此時編譯器以引用對象的類型作為auto 的類型:

2.5.3 decltype類型指示符

  • 有時會遇到這種情況:希望從表達式的類型推斷出要定義的變量的類型,但是不想用該表達式的值初始化變量。為了滿足這一要求,C++11新標準引入了第二種類型說明符
  • decltype,它的作用是選擇并返回操作數(shù)的數(shù)據(jù)類型。在此過程中,編譯器分析表達式 并得到它的類型,卻不實際計算表達式的值:
  • decltype(f()) sum // sum的類型就是函數(shù)f 的返回類型
  • 編譯器并不實際調(diào)用函數(shù)f,而是使用當調(diào)用發(fā)生時f的返回值類型作為sum的類型。換句話說,編譯器為sum指定的類型是什么呢?就是假如f 被調(diào)用的話將會返回的那個類型。
  • decltype處理頂層const和引用的方式與auto有些許不同。如果decltype使用的表達式是一個變量,則decltype返回該變量的類型(包括頂層const和引用在內(nèi))

  • 因為cj是一個引用,decltype (cj)的結(jié)果就是引用類型,因此作為引用的z必須被初始化。
  • 需要指出的是,引用從來都作為其所指對象的同義詞出現(xiàn),只有用在decltype處是一個例外。

decltype和引用

  • 如果decltype使用的表達式不是一個變量,則decltype返回表達式結(jié)果對應的類型。如 4.1.1節(jié) (第 120頁)將要介紹的,有些表達式將向decltype返回一個引用類型。 -般來說當這種情況發(fā)生時,意味著該表達式的結(jié)果對象能作為一條賦值語句的左值:

  • 因為r是一個引用,因此decltype (r)的結(jié)果是引用類型。如果想讓結(jié)果類型是r所指的類型,可以把r作為表達式的一部分,如 r+0,顯然這個表達式的結(jié)果將是一個具體值而非一個引用。
  • 另一方面,如果表達式的內(nèi)容是解引用操作,則decltype將得到引用類型。正如我們所熟悉的那樣,解引用指針可以得到指針所指的對象,而且還能給這個對象賦值。因此,decltype (*p)的結(jié)果類型就是int &,而非int。
  • decltype和 auto的另一處重要區(qū)別是,decltype的結(jié)果類型與表達式形式密切相關(guān)。有一種情況需要特別注意:對于 decltype所用的表達式來說,如果變量名加上了一對括號,則得到的類型與不加括號時會有不同。如果 decltype使用的是一個不加括號的變量,則得到的結(jié)果就是該變量的類型:如果給變量加上了一層或多層括號,編譯器就會把它當成是一個表達式。變量是一種可以作為賦值語句左值的特殊表達式,所以這樣的decltype就會得到引用類型:

補充知識

預處理器概述

  • 確保頭文件多次包含仍能安全工作的常用技術(shù)是預處理器(preprocessor),它由C++語言從C語言繼承而來。預處理器是在編譯之前執(zhí)行的一段程序,可以部分地改變我們所寫的程序。之前己經(jīng)用到了一項預處理功能#include,當預處理器看到#include標記時就會用指定的頭文件的內(nèi)容代替#include。C++程序還會用到的一項預處理功能是頭文件保護符(headerguard),頭文件保護符依賴于預處理變量(參見2.3.2節(jié),第48頁)。預處理變量有兩種狀態(tài):已定義和未定義。
  • #define指令把一個名字設定為預處理變量,另外兩個指令則分別檢查某個指定的預處理變量是否已經(jīng)定義:#ifdef當且僅當變量已定義時為真,#ifndef當且僅當變量未定義時為真。一旦檢查結(jié)果為真,則執(zhí)行后續(xù)操作直至遇到#endif指令為止。
  • 使用這些功能就能有效地防止重復包含的發(fā)生:

  • 第一次包含Sales_data. h 時,#ifndef的檢查結(jié)果為真,預處理器將順序執(zhí)行后面的操作直至遇到#endif為止。此時,預處理變量SALES_DATA_H的值將變?yōu)橐讯x,而且Sales_data.h也會被拷貝到我們的程序中來。后面如果再一次包含Sales_data . h,則#ifndef的檢查結(jié)果將為假,編譯器將忽略#ifndef到#endif之間的部分
  • 預處理變量無視C++語言中關(guān)于作用域的規(guī)則" .
  • 還可以使用 #pragma once? ?參考鏈接
  • 整個程序中的預處理變量包括頭文件保護符必須唯一,通常的做法是基于頭文件中類的名字來構(gòu)建保護符的名字,以確保其唯一性。為了避免與程序中的其他實體發(fā)生名字沖突,一般把預處理變量的名字全部大寫。

小 結(jié)?

  • 類型是C++編程的基礎。
  • 類型規(guī)定了其對象的存儲要求和所能執(zhí)行的操作。C+ +語言提供了一套基礎內(nèi)置類型,如 int和 char等,這些類型與實現(xiàn)它們的機器硬件密切相關(guān)。類型分為非常量和常量,一個常量對象必須初始化,而且一旦初始化其值就不能再改變。此外,還可以定義復合類型,如指針和引用等。復合類型的定義以其他類型為基礎。
  • C++語言允許用戶以類的形式自定義類型。C++庫通過類提供了一套高級抽象類型,如輸入輸出和string等。

術(shù)語表

  • 地址(address)是一個數(shù)字,根據(jù)它可以找到內(nèi)存中的一個字節(jié)。
  • 別名聲明(aliasdeclaration)為另外一種類型定義一個同義詞:使用“名字=類型”的格式將名字作為該類型的同義詞。
  • 算術(shù)類型(arithmetictype)布爾值、字符、整數(shù)、浮點數(shù)等內(nèi)置類型。
  • 數(shù)組(array)是一種數(shù)據(jù)結(jié)構(gòu),存放著一組未命名的對象,可以通過索引來訪問這些對象。3.5節(jié)將詳細介紹數(shù)組的知識。
  • auto是一個類型說明符,通過變量的初始值來推斷變量的類型。
  • 基本類型(basetype)是類型說明符,可用const修飾,在聲明語句中位于聲明符之前。基本類型提供了最常見的數(shù)據(jù)類型,以此為基礎構(gòu)建聲明符。
  • 綁定(bind)令某個名字與給定的實體關(guān)聯(lián)在一起,使用該名字也就是使用該實體。例如,引用就是將某個名字與某個對象綁定在一起。參考鏈接
  • 字節(jié)(byte)內(nèi)存中可尋址的最小單元,大多數(shù)機器的字節(jié)占8位。
  • 類成員(classmember)類的組成部分。復合類型(compoundtype)是一種類型,它的定義以其他類型為基礎。
  • const是一種類型修飾符,用于說明永不改變的對象。const對象一旦定義就無法再賦新值,所以必須初始化。
  • 常量指針(constpointer)是一種指針,它的值永不改變。
  • 常量引用(constreference)是一種習慣叫法,含義是指向常量的引用。
  • 常量表達式(constexpression)能在編譯時計算并獲取結(jié)果的表達式。constexpr是一種函數(shù),用于代表一條常量表達式。6.5.2節(jié)(第214頁)將介紹constexpr函數(shù)。
  • 轉(zhuǎn)換(conversion)-種類型的值轉(zhuǎn)變成另外一種類型值的過程。C++語言支持內(nèi)置類型之間的轉(zhuǎn)換。
  • 數(shù)據(jù)成員(datamember)組成對象的數(shù)據(jù)元素,類的每個對象都有類的數(shù)據(jù)成員的一份拷貝。數(shù)據(jù)成員可以在類內(nèi)部聲明的同時初始化。
  • 聲明(declaration)聲稱存在一個變量、函數(shù)或是別處定義的類型。名字必須在定義或聲明之后才能使用。
  • 聲明符(declarator)是聲明的一部分,包括被定義的名字和類型修飾符,其中類型修飾符可以有也可以沒有。
  • decltype是一個類型說明符,從變量或表達式推斷得到類型。默認初始化(defaultinitialization)當對象未被顯式地賦予初始值時執(zhí)行的初始化行為。由類本身負責執(zhí)行的類對象的初始化
    行為。全局作用域的內(nèi)置類型對象初始化為 0;局部作用域的對象未被初始化即擁有未定義的值。
  • 定義 (definition ) 為某一特定類型的變量申請存儲空間,可以選擇初始化該變量。名字必須在定義或聲明之后才能使用。
  • 轉(zhuǎn)義序列 (escape sequence) 字符特別是那些不可打印字符的替代形式。轉(zhuǎn)義以反斜線開頭,后面緊跟個字符,或者不多于3 個八進制數(shù)字,或者字母x 加上 1 個 I-六進制數(shù)。
  • 全局作用域(global scope)位于其他所有作用域之外的作用域。
  • 頭文件保護符(header guard)使用頂處理變量以防止頭文件被某個文件重復包含。
  • 標識符 (identifier)組成名字的字符序列, 標識符對大小寫敏感。
  • 類內(nèi)初始值(in-class initializer)在聲明類的數(shù)據(jù)成員時同時提供的初始值,必須置等號右側(cè)或花括號內(nèi)"
  • 在作用域內(nèi)(in scope) 名字在當前作用域內(nèi)可見。
  • 被初始化 (initialized) 變量在定義的同時被賦予初始值,變量一般都應該被初始化
  • 內(nèi)層作用域(inner scope)嵌套在其他作用域之內(nèi)的作用域。
  • 整 型 (integral type) 參見算術(shù)類型。 列表初始化(listinitialization)利用花括號把一個或多個初始值放在一起的初始化形式。
  • 字 面 值 (literal)是一個不能改變的值,如 數(shù)字、字符、字符串等。單引號內(nèi)的是字符字知值,雙引號內(nèi)的是字符串字面值。
  • 局部作用域(local scope) 是塊作用域的習慣叫法。
  • 底層 const (low-level const) —個不屬頂層的const,類型如果由底層常量定義,則不能被忽略。
  • 成 員 (member)類的組成部分。
  • 不可打印字符(nonprintable character)不具有可見形式的字符,如控制符、退格、換行符等。
  • 空 指 針 (null pointer)值為0 的指針,空指針合法但是不指向任何對象。nullptr是表示空指針的字面值常星”
  • 對 象 (object)是內(nèi)存的塊區(qū)域,具有某種類型,變量是命名了的對象。
  • 外層作用域( outer scope) 嵌套著別的作用域的作用域。
  • 指 針 (pointer)是一個對象,存放著某個對象的地址,或皆某個對象存儲區(qū)域之后的下一地址,或者0。
  • 指向常量的指針(pointer to const)是一個指針,存放著某個常量對象的地址。指向常量的指針不能用來改變它所指對象的值。
  • 預 處 理 器 (preprocessor)在 C++編譯過程中執(zhí)行的-段程序。
  • 預處理變量(preprocessor variable) 由預處理器管理的變量。在程序編譯之前,預處理器負責將程序的預處理變量替換成它的真實值
  • 引 用 (reference)是某個對象的別名。?
  • 對常量的引用(reference to const)是個引用,不能用來改變它所綁定對象的值。對常量的引用可以綁定常量對象,或者非常量對象,或者表達式的結(jié)果。
  • 作用域(scope) 是程序的-部分,在其中某些名字有意義。C++有凡級作用域:
  • 全 局 (global)----- 名字定義在所有其他作用域之外。
  • 類 (class)-----名字定義在類內(nèi)部。
  • 命 名空間(namespace)----- 名字定義在命名空間內(nèi)部。
  • 塊 (block)----- 名字定義在塊內(nèi)部。名字從聲叫位置開始育至聲明語句所在的作用域末端為止都是可用的。
  • 分離式編譯< separate compilation) 把程序分割為多個單獨文件的能力。
  • 帶符號類型(signed)保存正數(shù)、負數(shù)或0的整型。
  • 字符串(string)是一種庫類型,表示可變長字符序列。
  • struct是個關(guān)鍵宇,用于定義類。
  • 臨時值(temporary)編譯器在計算表.達式結(jié)果時創(chuàng)建的無名對象。為某表達式創(chuàng)建了 -個臨時值,則此臨時值將一直存在直到包含何該表達式的最大的表達式計算完成為止。
  • 頂層 const ( top-level const) 是一個const,規(guī)定某對象的值不能改變。
  • 類型別名(type alias)是 個名字,是另外個類型的同義詞 ,通過關(guān)鍵字typedef或別名聲明語句來定義。
  • 類型檢查(type checking )是一個過程. 編譯器檢查給定類型對象的方式與該類型的定義是否一致。
  • 類型說明符< type specifier) 類型的名字。
  • typedef為某類型足義一個別名。當關(guān)鍵字 typedef作為聲明的基本類型出現(xiàn)時,聲明中定義的名字就是類型名。
  • 未 定 義 (undefined) 即 C ++沒有明確規(guī)定的情況。不論是否有意為之,未定義行為都能引發(fā)難以追蹤的運行時錯誤、安全問題利可移植性問題。
  • 未初始化(uninitialized)變量己定義但沒被賦予初始值.一般來說,試圖訪問未初始化變量的值將引發(fā)未定義行為
  • 無符號類型(unsigned)保存大于等于0的整型.
  • 變量(variable)命名的對象或引用.C++語言要求變量要先聲明后使用。
  • void* 以指向任以非常量的指針類型,不能執(zhí)行解引用操作。
  • void類型是-種有特殊用處的類型,既無操作也無值.不能定義-個void類型的變量
  • 字(word)在指定機器上進行整數(shù)運算:的自然單位。一般來說,字的空間足夠字放地址.32位機器上的字通常占據(jù)4個字節(jié)
  • &運算符(&operator)取地址運算符。
  • *運算符(*operator)解引用運算符。解引用-個指針將返回該指針所指的對象,為解引用的結(jié)果賦值也就是為指針所指的對象賦值。
  • #define是-條預處理指令,用于定義一個預處理變量
  • #endif是一條預處理指令,用于結(jié)束一個#ifdef或#ifndef區(qū)域。
  • #ifdef是-條預處理指令,用于判斷給定的變量是否已經(jīng)定義.
  • #ifndef是-條預處理指令,用于判斷給定的變量是否尚未定義’

總結(jié)

以上是生活随笔為你收集整理的C++primer 第 2 章 变量和基本类型的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。

日本中文字幕在线一区 | 在线观看黄av | www天天操 | www.久久婷婷 | 日韩精品一区二区三区外面 | 久久久久久久久黄色 | 最近中文字幕免费大全 | 国产女人免费看a级丨片 | 久久好看免费视频 | 亚洲国产精品推荐 | 婷婷久月 | 久久99中文字幕 | 成人动漫一区二区 | 国产精品麻豆三级一区视频 | 91精品国产福利在线观看 | 国产福利网站 | 日韩在线网址 | 久久综合九色欧美综合狠狠 | 亚洲黄色成人网 | 99精品国产福利在线观看免费 | 夜夜高潮夜夜爽国产伦精品 | 黄www在线观看 | 国产黄a三级三级三级三级三级 | 国语黄色片| 91九色在线| 午夜国产福利视频 | 91久久精品一区 | 亚洲精品欧美专区 | 国产在线观看免 | 久草免费资源 | 国产伦理精品一区二区 | 天天操天天舔天天爽 | 人人澡超碰碰97碰碰碰软件 | 最新av电影网站 | 精品久久久久久亚洲综合网站 | 免费黄a大片 | 午夜免费电影院 | 国产一区二区三区在线免费观看 | 97超碰人人澡人人爱学生 | 久久精品一区二区三区四区 | 欧美日韩一级久久久久久免费看 | 国产亚洲精品福利 | 午夜精品一区二区三区可下载 | 美女视频黄频大全免费 | 奇米网444| 日本久久久久 | 日日夜精品 | 狠狠色丁香婷婷综合欧美 | 在线你懂| 午夜天使| 天天草天天摸 | av中文字幕网 | 日本女人在线观看 | 久久久999精品视频 国产美女免费观看 | 国产精品久久久久免费观看 | 一区免费在线 | 免费观看mv大片高清 | 国产视频二区三区 | 黄色中文字幕 | 成人黄色电影在线播放 | 乱子伦av| 青青色影院 | 人人爽人人爽人人爽人人爽 | 婷婷综合五月天 | 蜜臀精品久久久久久蜜臀 | 成人福利在线播放 | 在线91观看 | 三级黄色片子 | 国产手机视频在线播放 | 国产中文字幕视频 | av在线影视 | 天天色综合1 | 国产伦精品一区二区三区照片91 | 久久精品aaa | 国产精品免费观看国产网曝瓜 | 日韩免费不卡av | 色吧久久 | 日本xxxx.com| 久久午夜色播影院免费高清 | 六月天综合网 | 国产精品18久久久久久首页狼 | 在线观看国产成人av片 | 99精品视频在线观看 | 婷婷丁香激情综合 | 女人18毛片a级毛片一区二区 | 日韩最新在线视频 | 黄色片网站av | 天天干夜夜爽 | 国产精品美女999 | 中文免费在线观看 | 91x色| 天无日天天操天天干 | 国产一区二区午夜 | 欧美片一区二区三区 | 波多野结衣电影一区二区三区 | 中文字幕麻豆 | 91大神免费视频 | 精品一二区 | 欧美日韩一二三四区 | 国产免费三级在线观看 | 在线播放 亚洲 | 久久亚洲综合国产精品99麻豆的功能介绍 | 91九色视频国产 | 激情黄色一级片 | 最近中文字幕国语免费高清6 | 天天操天 | 69av网| 视频在线一区二区三区 | 久久成人综合视频 | 狠狠色丁香久久婷婷综合五月 | 国产精品中文字幕在线播放 | 成人一级视频在线观看 | 日韩久久精品一区二区 | 99久免费精品视频在线观看 | 人人揉人人揉人人揉人人揉97 | 99视频在线 | 亚洲欧洲视频 | 日韩成人在线一区二区 | 99久久久成人国产精品 | 99久久日韩精品免费热麻豆美女 | 狠狠色丁香婷婷综合 | 国产成人精品午夜在线播放 | 最近中文字幕完整高清 | 亚洲精品视频在线观看网站 | 在线免费黄色 | 日韩www在线 | 免费人成网| 午夜电影久久 | 精品天堂av | 97精品国产97久久久久久 | 99视频在线观看一区三区 | 国产精品99精品 | 亚洲一区不卡视频 | 天天色天天色天天色 | 国产手机在线观看视频 | 精品一区二区在线观看 | 成人动态视频 | 久在线观看 | 国产成人精品av久久 | 黄色网在线播放 | 9热精品| 国产资源| 五月婷亚洲 | 亚洲福利精品 | 日免费视频 | 欧美综合色在线图区 | 久草视频资源 | 香蕉视频免费在线播放 | 欧美久久久久久久久久久久久 | 婷婷丁香国产 | 国产亚洲精品久久久久秋 | 日韩视频中文字幕在线观看 | 久射网 | 亚洲精品在线视频 | 欧美a影视 | 日韩av偷拍| 成人宗合网| 欧美在线观看视频一区二区三区 | 91最新视频 | 亚洲国产成人在线观看 | 亚洲成人黄色在线观看 | 麻豆视频在线播放 | 国产成视频在线观看 | 亚洲成av人片一区二区梦乃 | 亚洲视频一 | 国内三级在线观看 | 欧美视频国产视频 | 成人在线一区二区 | 中文在线免费看视频 | 永久免费精品视频 | 激情欧美日韩一区二区 | 中文字幕高清免费日韩视频在线 | 午夜影院先 | 久久99热这里只有精品国产 | 欧美一级特黄aaaaaa大片在线观看 | 欧美另类xxxxx | 中文国产字幕在线观看 | 99热手机在线 | 久久国产品 | 一级α片| 国产视频二区三区 | 亚洲视频一级 | 久久精品国产v日韩v亚洲 | av日韩精品| 国产免费观看久久黄 | 欧美日韩在线播放一区 | 国产成人三级三级三级97 | 色综合亚洲精品激情狠狠 | 免费视频xnxx com | 最近最新中文字幕视频 | 久久ww | 91视频 - 88av| 五月天久久综合网 | 又黄又爽的视频在线观看网站 | 日韩网站一区二区 | av超碰免费在线 | 成人一区二区三区中文字幕 | 91大神在线看 | 日韩在线短视频 | 中文字幕在线观看视频一区二区三区 | 国产精品久久久久久久久久久免费 | 久久久国产成人 | 久久久久久免费毛片精品 | 亚洲黄色片一级 | 美国av大片| 亚洲综合视频在线 | 欧美精品久久久久久久久老牛影院 | 久久99热国产 | 91亚洲欧美| 国产精品专区在线观看 | av在线免费观看网站 | 亚洲a网 | 国产在线999 | 在线视频国产区 | 九九久久在线看 | 国产一区在线看 | 福利视频一区二区 | 人人干,人人爽 | 欧美日本在线观看视频 | 日韩久久在线 | 午夜美女福利直播 | av免费片 | av福利电影| 日韩网站在线免费观看 | www.久久久 | 波多野结衣小视频 | 九九久久国产精品 | 97超碰在线久草超碰在线观看 | 成人久久亚洲 | 国产精品毛片久久久 | 男女视频91 | 国产永久网站 | 天天爽人人爽 | 91麻豆精品国产自产 | 看片一区二区三区 | 人人爽影院 | 日韩欧美精品在线视频 | 日韩精品一区二区三区免费观看视频 | 中文字幕精品久久 | 91在线视频一区 | 久草视频手机在线 | av黄色国产 | 精品人人爽| 久久视频免费观看 | 五月激情五月激情 | av免费网站观看 | av免费观看高清 | 天天草网站 | 久久99久久精品国产 | 美女很黄免费网站 | 美女视频黄网站 | 亚洲劲爆av | 国产精品男女视频 | 一区二区精品国产 | 日韩欧美精品一区 | 亚洲国产一区在线观看 | 国产无遮挡又黄又爽在线观看 | 99精品系列| 九九免费观看全部免费视频 | 国产精品com| 九九热免费在线视频 | 天天综合在线观看 | av在线中文| 伊人欧美| 日韩免费在线观看视频 | 久久久国产成人 | 最新国产精品拍自在线播放 | 女人18毛片90分钟 | 狠狠久久综合 | 欧美国产日韩一区二区 | 久久久久久片 | 大胆欧美gogo免费视频一二区 | 97超碰人人模人人人爽人人爱 | 亚洲精品视频 | 久久久久夜色 | 一区二区三区在线免费 | 欧美另类高潮 | 五月婷婷国产 | 婷婷色视频| 日韩二区三区在线观看 | 久久99热久久99精品 | 永久免费视频国产 | 亚洲综合在线一区二区三区 | www.天天草 | 欧美日韩在线视频观看 | 99视频久 | 国产视频日韩 | 精品产品国产在线不卡 | 超碰人人在线观看 | 麻豆传媒电影在线观看 | 国产成人精品一区二区三区福利 | 五月婷在线视频 | 日日干狠狠操 | 久久久精品国产免费观看一区二区 | 国产黄色精品在线 | 91人人干| 亚洲国产字幕 | 久久久久成人精品 | 国产黄影院色大全免费 | 激情综合网五月 | 精品在线看 | 久热久草| 欧美精品免费在线 | 夜夜澡人模人人添人人看 | 国产麻豆传媒 | a在线视频v视频 | 国产精品一区二区三区在线 | 超级碰碰碰免费视频 | 国产精品成久久久久三级 | 欧美成人精品xxx | av电影中文 | 亚洲日本va在线观看 | 骄小bbw搡bbbb揉bbbb | 超碰成人免费电影 | 欧美极品少妇xbxb性爽爽视频 | 久久久久国产a免费观看rela | 亚洲日本成人 | 五月天激情视频在线观看 | 最新国产精品久久精品 | 欧美五月婷婷 | 精品国产乱码一区二 | 国产中文字幕一区 | 最新影院 | 成年人看片 | 四虎www com| 日日骑 | 久久久蜜桃一区二区 | 99精品视频免费全部在线 | 国产精品久久久久久久久久白浆 | 国产一级淫片在线观看 | 九9热这里真品2 | 国产成a人亚洲精v品在线观看 | a天堂最新版中文在线地址 久久99久久精品国产 | 丁香婷婷社区 | 久久人人爽视频 | 成人国产精品久久久久久亚洲 | 婷婷视频| 色噜噜日韩精品欧美一区二区 | 色综合天天综合在线视频 | 中文字幕在线观看免费高清电影 | 国产精品久久伊人 | 国产91在线播放 | 久久久国产99久久国产一 | 一区视频在线 | 麻豆 91 在线 | 欧美成人xxxxx | 国产精品99久久久 | 国产精品v a免费视频 | 一个色综合网站 | 中文字幕 欧美性 | 天天操天天干天天综合网 | 96视频免费在线观看 | 中文字幕精品一区 | 国产精品第三页 | 免费一级片久久 | 91九色视频在线 | 中文字幕在线看视频国产中文版 | 久久99日韩 | 在线国产福利 | 国产午夜精品一区二区三区 | 亚洲一级黄色av | 久久无码精品一区二区三区 | 欧美性一级观看 | 亚洲免费婷婷 | 香蕉久草在线 | 美女视频黄在线 | 天天操人 | 美女免费视频网站 | 久久精彩| 在线影视 一区 二区 三区 | 亚洲在线视频播放 | 国产免费三级在线观看 | 五月天激情视频在线观看 | 久久中文字幕导航 | 国产视频一区二区三区在线 | 成人久久影院 | 国产精品福利无圣光在线一区 | 狠狠狠狠干| 欧美有色| 精品国产一区二区三区久久久 | 国产不卡在线观看 | av资源在线看| 女人18片| 成人禁用看黄a在线 | 日韩黄色中文字幕 | 欧美成人在线免费 | 天堂中文在线视频 | 天天色草| 91插插插网站 | 亚洲国产小视频在线观看 | 国产91av视频在线观看 | 久久久这里有精品 | 国模一区二区三区四区 | 高清有码中文字幕 | 日韩天堂网 | 欧美日韩高清在线一区 | 成人久久18免费 | 在线免费观看视频一区二区三区 | 亚洲国产欧美在线看片xxoo | 天天插一插| 一区二区三区免费网站 | 久久不射电影院 | 精品 激情 | 欧美精品一区二区性色 | 99精品视频中文字幕 | 久久久久久网址 | 天天人人综合 | 狠狠干狠狠操 | 在线视频一二三 | 亚洲精品xxxx| 国产欧美综合在线观看 | 国产一级精品绿帽视频 | 激情丁香月| av先锋中文字幕 | 国产精品精| 人人草天天草 | 国产精品久久久久aaaa九色 | 香蕉免费 | 草莓视频在线观看免费观看 | 国产精品一区二区久久精品爱微奶 | 国产精品乱码高清在线看 | 国产免费中文字幕 | 久久久久国产一区二区三区 | 中文字幕在线视频第一页 | 国产人成在线观看 | 亚洲精品国偷拍自产在线观看 | 国产一区二区视频在线 | 九九久久精品 | 中文字幕在线看视频国产 | 99精品久久99久久久久 | 欧美另类重口 | 在线看黄色av | 日本视频网 | 日本在线观看一区二区三区 | 五月综合久久 | 97精品国产97久久久久久久久久久久 | 黄色精品一区二区 | 免费a v网站 | 久久国产视频网站 | 欧美少妇的秘密 | 国产精品久久久区三区天天噜 | 丝袜美腿在线视频 | 在线观看的av网站 | 日韩精品不卡 | 日本三级香港三级人妇99 | 精品成人a区在线观看 | 国产精品1区2区3区在线观看 | 蜜桃视频日韩 | 久久久久综合网 | 又黄又爽又刺激 | 91天堂素人约啪 | 日本动漫做毛片一区二区 | 午夜 久久 tv| 国产成人福利在线观看 | 久草视频视频在线播放 | 91精品无人成人www | 欧美不卡视频在线 | 最新日韩中文字幕 | 免费观看黄 | 亚洲日本欧美 | 亚洲国产日韩av | 一级淫片a | 日本黄区免费视频观看 | 国产精品久久久久久久av大片 | 久久久久久福利 | 国产精品99久久99久久久二8 | 在线a亚洲视频播放在线观看 | 亚洲美女精品区人人人人 | 久草精品在线 | 色资源二区在线视频 | 亚洲精品日韩一区二区电影 | 久久国产精品99久久久久久丝袜 | 亚洲国产视频a | 久久久久久久久久免费 | 在线播放精品一区二区三区 | 麻豆精品传媒视频 | 亚洲天天看| 操操操天天操 | 久久香蕉电影网 | 不卡av电影在线观看 | 最新色站| 免费看的黄色的网站 | 国产精品麻豆一区二区三区 | 波多野结衣视频一区二区三区 | 在线观看成人小视频 | 狠狠色狠狠色终合网 | 亚洲天堂免费视频 | 亚洲欧美日韩国产精品一区午夜 | 久久精品网站免费观看 | 人人添人人澡人人澡人人人爽 | 天堂av最新网址 | 天天草av | 91久久在线观看 | 久久精品视频2 | 麻豆视传媒官网免费观看 | 夜夜高潮夜夜爽国产伦精品 | 中文字幕婷婷 | 亚洲天堂自拍视频 | 国产精品福利在线播放 | 中文字幕国产精品一区二区 | 激情九九 | 99精品视频99 | 国产亚洲精品女人久久久久久 | 国产视频精品免费 | 午夜电影av| 欧美二区三区91 | 国产精品成人自产拍在线观看 | 91精品一区二区在线观看 | 成人国产一区二区 | 欧美韩国在线 | 久99久在线 | 国产精品久久久久久久久搜平片 | 成人日韩av | 久久精品亚洲精品国产欧美 | 伊人婷婷激情 | 日韩精品在线视频 | 91在线观看欧美日韩 | 91免费的视频在线播放 | 五月天中文字幕 | 高清av中文在线字幕观看1 | 成人免费在线看片 | 欧美一二三在线 | 国产精选在线 | 亚洲国产精品女人久久久 | 日韩videos高潮hd| 久久综合免费视频影院 | 久久男人中文字幕资源站 | 婷婷综合导航 | 欧美专区国产专区 | 国产精品入口传媒 | 国产精品久久久久永久免费观看 | 超碰精品在线 | 九九免费在线看完整版 | 在线观看韩日电影免费 | 又黄又爽又无遮挡的视频 | 美女啪啪图片 | 青青草在久久免费久久免费 | 久久99国产精品久久99 | 国产中文字幕网 | 在线成人小视频 | 中文字幕中文字幕中文字幕 | 色的网站在线观看 | 黄网在线免费观看 | 四虎在线永久免费观看 | 伊人久在线 | 日韩视频中文字幕在线观看 | 国产精品网在线观看 | 久久免费a | 婷婷视频在线播放 | 97香蕉久久国产在线观看 | 日韩电影一区二区三区 | 日韩亚洲欧美中文字幕 | 国产伦精品一区二区三区在线 | 欧美日韩国产高清视频 | 成人av电影免费 | 久久国产精品久久久 | 免费看的黄色片 | 亚洲精品1234区 | 爱爱av在线| 日韩影视精品 | 欧洲色综合 | 欧美日韩天堂 | 亚洲国产三级 | 日日夜夜骑| 人人干干人人 | av亚洲产国偷v产偷v自拍小说 | 一区二区三区四区精品视频 | 黄色av播放 | 在线观看你懂的网站 | 国产日本亚洲 | 亚洲欧美国产精品va在线观看 | 欧美在线观看视频一区二区 | 国产精品中文久久久久久久 | 午夜av片 | 国产白浆视频 | 午夜视频黄 | 久草男人天堂 | 国产又粗又猛又色又黄网站 | 在线观看深夜视频 | 看片网站黄 | 91视频-88av | 免费在线观看一区 | 六月天综合网 | 久草免费在线视频 | 亚洲人xxx | 精品一区 精品二区 | 天天做天天射 | 四虎在线视频免费观看 | 国产视频97 | 国产精品欧美日韩 | 亚洲精品久久久久久久不卡四虎 | 欧美另类sm图片 | 在线观看你懂的网址 | 午夜精品视频免费在线观看 | 一区二区网 | 天天操天天曰 | 免费看成人片 | 亚洲小视频在线 | 视频1区2区 | 激情网五月婷婷 | 看污网站| 精品一区91 | 九色91在线| 天天爱天天操天天干 | 99久久精品费精品 | 国产精品99久久久久人中文网介绍 | 久久99亚洲网美利坚合众国 | 亚洲精品视频免费 | 久草视频免费看 | 国产精品美女免费看 | 激情综合六月 | 久久最新视频 | 精品国产123 | 国产精品久久99综合免费观看尤物 | 精品视频123区在线观看 | 国产成人在线播放 | 人人澡人人爱 | 国产日产精品一区二区三区四区的观看方式 | 久久呀| 亚洲色图色| 一本一本久久a久久精品综合小说 | 精品免费久久久久 | 成人小视频在线播放 | 99久久精品国产一区二区三区 | 天天操夜夜爱 | 日韩性色| 在线a人片免费观看视频 | 久久激情视频 | 91入口在线观看 | h动漫中文字幕 | 国产精品亚洲片夜色在线 | 精品一区二区在线观看 | 日韩v在线| 国产不卡精品 | 欧美最新另类人妖 | 色之综合网 | 97在线资源 | 日韩久久午夜一级啪啪 | 久草在线最新免费 | 黄色不卡av | a在线观看免费视频 | 在线免费观看麻豆 | 精品免费在线视频 | 国产一级h | 天天综合色天天综合 | 欧美激情综合色 | 久久成年人视频 | 色婷婷狠狠操 | 日韩在线观看小视频 | 狂野欧美激情性xxxx | 91丨九色丨91啦蝌蚪老版 | 日韩亚洲在线观看 | 亚洲天天在线日亚洲洲精 | 久视频在线播放 | 在线观看成人av | 国产精彩视频一区二区 | 欧美天天综合网 | 欧美精品在线视频 | 中文视频在线看 | 日日夜夜骑 | 日本精品二区 | 中文字幕 91 | 欧美日韩免费观看一区=区三区 | 国产在线看一区 | 国产精品av在线免费观看 | 青青视频一区 | 天天亚洲 | 久久婷婷国产色一区二区三区 | 在线а√天堂中文官网 | 二区在线播放 | 精品av在线播放 | 首页av在线 | 国产高清精 | 狠狠婷婷 | 午夜精品三区 | 国产亚洲一区二区三区 | 日韩激情视频在线观看 | 久久久男人的天堂 | 久久精品高清 | 91理论片午午伦夜理片久久 | 国产97碰免费视频 | 亚洲永久国产精品 | 免费无遮挡动漫网站 | 国产91全国探花系列在线播放 | 国产精品久久久久影院日本 | 黄色影院在线免费观看 | 91免费在线看片 | 96精品视频 | 2019中文字幕第一页 | 激情五月在线视频 | 亚洲天堂精品视频在线观看 | 国产精品12345| 国产精品av久久久久久无 | 又爽又黄又无遮挡网站动态图 | 91精品国产综合久久福利不卡 | 亚洲黄色在线观看 | 超碰97免费观看 | 欧洲av在线 | 美女福利视频在线 | 日韩91精品 | 96av麻豆蜜桃一区二区 | 免费观看一级 | 亚洲精品美女在线观看 | 色综合久久久网 | 亚洲午夜av久久乱码 | 天天婷婷| 天天舔天天射天天操 | 国产精品第一视频 | 天堂va欧美va亚洲va老司机 | 精品国产一区二区三区久久影院 | aaaaaa毛片| 在线精品在线 | 操少妇视频 | 激情深爱| 成人精品一区二区三区中文字幕 | 国产成人av福利 | 黄色免费观看 | 国产精品自产拍 | 高清国产午夜精品久久久久久 | 久久伦理 | 97视频播放 | 97色婷婷人人爽人人 | 亚洲精品欧美专区 | 最新黄色av网址 | 国产一区二区精品久久91 | 91最新视频| 国产91影院| 天天狠狠操 | 日韩精品一区二区三区免费观看视频 | 亚洲我射av | 日韩欧美xxx | 一区二区三区四区精品视频 | www.黄色小说.com | 超碰97中文 | 久久久国产电影 | 亚洲另类视频在线观看 | 天天操天天干天天插 | 欧美日韩中文另类 | av成人资源 | 伊人午夜视频 | 99久久一区 | 久久精品视 | 欧美成人免费在线 | 久久国精品 | 中国一级特黄毛片大片久久 | 色综合天天爱 | 久久五月激情 | 日韩r级在线 | 国产美女免费 | free. 性欧美.com | av免费在线观看网站 | 久久视频国产 | 亚洲精品美女 | 久草视频精品 | 美女视频a美女大全免费下载蜜臀 | 久久精品免费看 | 欧美日韩中文字幕视频 | 日韩三级免费 | 亚洲日本va午夜在线电影 | 日日夜夜精品 | 免费看黄在线观看 | 国产午夜三级一区二区三 | 在线www色| 国产白浆在线观看 | 中文字幕国产在线 | 免费观看一区二区三区视频 | 国产系列精品av | 五月天婷亚洲天综合网鲁鲁鲁 | 亚洲精品在线观看免费 | 日韩大片在线观看 | 国产女人免费看a级丨片 | 欧美91精品国产自产 | 久久久久久美女 | 国产精品美女久久久久久久久 | 97精品电影院 | 国产在线观看中文字幕 | 在线观看黄色国产 | 欧美日韩免费看 | 亚洲四虎影院 | 在线超碰av | 麻花豆传媒mv在线观看 | 久草精品视频在线播放 | 欧美午夜一区二区福利视频 | 久久久久久久久久免费视频 | 91看片淫黄大片一级在线观看 | 五月天com | 三级黄色在线观看 | 久久久久久久99精品免费观看 | 亚洲永久字幕 | 精品欧美小视频在线观看 | 在线国产视频 | av视屏在线播放 | 色噜噜在线观看 | 免费观看完整版无人区 | 天天弄天天操 | 国色天香av | 日韩视频中文字幕 | 欧美亚洲一级片 | 久久久久区 | 96久久 | 粉嫩av一区二区三区四区在线观看 | 成人在线一区二区 | 国产成人精品亚洲日本在线观看 | 国产精品久久久久久久久久东京 | 天天射天天爽 | 久久一区国产 | 国产视频欧美视频 | 精品一二| 黄色一二级片 | 国产精品免费不卡 | 国产精品精品久久久久久 | 久久成人一区二区 | 又黄又爽又刺激的视频 | 又黄又爽又无遮挡免费的网站 | 国产亚洲精品无 | 怡春院av| 天天色天天操综合网 | 国产精品一区二区视频 | 国产色资源 | 亚洲资源视频 | 国产精品久久久久av福利动漫 | 午夜骚影| av亚洲产国偷v产偷v自拍小说 | 中文字幕在线乱 | 91大神精品视频在线观看 | 日本精品一区二区三区在线播放视频 | 免费av网站观看 | 免费黄a| 一区二区视频播放 | 日韩激情综合 | 96在线| 成年人网站免费观看 | 日韩精品中文字幕在线不卡尤物 | 日韩二区在线 | 精品久久久久久久久久久久 | 13日本xxxxxⅹxxx20| 欧美片一区二区三区 | 精品成人a区在线观看 | 久久专区 | 日本一区二区三区免费看 | 久久99热国产 | 欧美日本不卡视频 | 91精品国产一区二区在线观看 | av不卡网站 | 五月婷婷操 | 久久色网站| 亚洲精品在线视频播放 | 国产手机在线播放 | 激情视频综合网 | 九九热中文字幕 | 亚洲激情一区二区三区 | 色综合久久中文字幕综合网 | 中文字幕五区 | 久久精品国产免费看久久精品 | 五月婷婷中文字幕 | 超碰97公开 | 久久首页 | 97高清视频 | 中文字幕乱在线伦视频中文字幕乱码在线 | 国产精品一级视频 | 贫乳av女优大全 | 国产精品自在线 | 免费成人在线电影 | 欧美做受高潮电影o | 国产玖玖视频 | 成人xxxx| 九月婷婷综合网 | 亚洲欧洲精品一区 | 国产视频在线观看免费 | av在线播放亚洲 | 日韩在线观看网址 | 成人午夜av电影 | 国产精品一区电影 | h文在线观看免费 | 麻豆91网站 | a爱爱视频 | 91九色蝌蚪国产 | 福利精品在线 | 99精品一区二区三区 | 国产美女免费视频 | 国产成人精品999 | 国产99一区视频免费 | 欧美日韩一区二区三区在线观看视频 | 国产日韩精品在线 | 久久久久久久久网站 | 欧美成人区 | 欧美日韩一二三四区 | 亚洲精品乱码久久 | 97超碰成人 | 91日本在线播放 | 亚洲免费精品视频 | 在线观看岛国片 | 超碰公开在线观看 | 亚洲狠狠 | 国产精品视频最多的网站 | 日韩欧美视频一区二区三区 | 成人免费视频播放 | 亚洲精品啊啊啊 | 一二三久久久 | 国产高清一级 | 黄色高清视频在线观看 | 亚洲第一区精品 | 精品国产免费久久 | 午夜视频在线观看网站 | 国产不卡在线 | 不卡日韩av | 中文字幕色在线 | av一区二区在线观看中文字幕 | 在线免费色 | 91精品在线免费观看 | 欧美精品一二三 | 香蕉影视在线观看 | www.色午夜| 综合色伊人| 国产91在线免费视频 | 亚洲电影久久久 | 精品国偷自产在线 | japanesefreesexvideo高潮 | 免费网站看v片在线a | 亚洲国产精品电影 | 美国av大片 | 激情丁香婷婷 | 欧美激情视频在线免费观看 | 国产日韩在线视频 | 国产精品久久久久久久久免费看 | 精品久久久久久久久久久久久久久久久久 | 久久婷婷国产 | 在线观看中文字幕dvd播放 | 久久久久国 | 91九色精品国产 | 国产五十路毛片 | 亚洲欧美成人在线 | 久久中文字幕在线视频 | 国产一区黄色 | 国产精品女 | 精品国产乱码久久久久久久 | 国产精品自产拍在线观看中文 | 亚洲精品www. | 天天爱天天色 | 亚洲一区二区三区精品在线观看 | 久草视频2| 久久天天躁夜夜躁狠狠躁2022 | 国产一线二线三线性视频 | 免费久久精品视频 | 在线天堂8√ | 网站免费黄 | 亚洲电影网站 | 中文字幕免费在线看 | 一区二区三区精品在线 | 久久久亚洲精华液 | 91男人影院 | 国产精品美 | 一区二区三区电影 | 超碰99在线| 丁香五月缴情综合网 | 国产福利91精品一区 | 亚洲精品国精品久久99热一 | 国产在线小视频 | 九色porny真实丨国产18 | 国产精品成人免费精品自在线观看 | 99精品欧美一区二区三区 | 日韩视频一区二区三区 | av网站在线免费观看 | 日韩久久精品一区二区 | 久艹在线观看视频 | 亚洲精品视频 | 国产真实精品久久二三区 | 成年人在线免费看视频 | 香蕉在线播放 | 亚洲在线成人精品 | 久久免费毛片视频 | 亚洲国产三级在线 | 国产精品激情偷乱一区二区∴ | 99r在线视频| 亚洲精品小区久久久久久 | 6699私人影院| 中文字幕在线观看第三页 | 东方av免费在线观看 | 免费三级大片 | 国产女v资源在线观看 | 五月婷激情 | 欧美日韩国产二区 | 久久国产精品电影 | 天天拍天天干 | 天天射一射| 91久久奴性调教 | 天天操天天摸天天爽 | 久久成人免费视频 | 在线播放一区 | 正在播放亚洲精品 | 91在线精品一区二区 | 日韩欧美在线观看 | 久草精品视频在线看网站免费 | 国产91影院 | 毛片基地黄久久久久久天堂 | www色网站 | 黄色一级在线视频 | 黄色免费网站 |