1. 程式人生 > >C++ Primer中文版(第五版)--第二章 變數和基本型別

C++ Primer中文版(第五版)--第二章 變數和基本型別

   資料型別是程式的基礎,它告訴我們資料的意義以及我們能在資料上執行的操作

     C++定義了幾種基本內建型別:字元、整型、浮點數等,同時程式設計師可以自定義資料型別,另外C++ 標準庫還定義了一些更加複雜的資料型別,如可變長字串和向量。

2.1 基本內建型別

     算術型別:字元、整型數、布林值和浮點數

     分為兩類:整型(包括,字元和布林型別);浮點型

     其中,long long 是長整型(C++11),64位,long double 擴充套件精度浮點數,10位有效數字

     布林型別的取值是真和假

     有符號與無符號型別中,對於int, short, long, 預設是有符號的;與其他整型不同,字元型被分為了三種:char, signed char和unsigned char,其中char和singned char不一樣,其中char實際上會表現為有符號或無符號,具體是有編譯器決定。

     空型別:不對應具體的值

      型別轉換

      字面常量

       整型字面值和浮點型字面值;

       字元和字串字面值:字串字面值的型別實際上是由常量字元構成的陣列,編譯器在每個字串的結尾處添加了一個空字元('\0')

     轉義序列

     一類是不可列印;另外一類是特殊字元(單引號、雙引號、問號、反斜槓)

       布林字面值和指標字面值

2.2  變數

     變數提供了一個具名的、可供程式操作的儲存空間,對於C++程式設計師來說,變數和物件一般可以互換。

     C++中,在給建立物件的時候,物件獲得一個特定的值叫作初始化,初始化不是賦值。因為賦值的含義是把物件的當前值擦除,而用一個新值代替。

      初始化方式:

                   int  a = {0}; 或者 int a(0);  或者int a{0}.

     預設初始化:類的物件,如何沒有顯式地初始化,則有其類確定。

    變數宣告和定義的關係:

     C++支援分離式編譯。

    1. 宣告:使得名字為程式所知,一個檔案如果想使用別處定義的名字,則必須包含對那個名字的宣告

     2. 定義:負責建立與名字關聯的實體。

      聯絡----變數宣告規定了變數的型別和名字;區別----定義需要申請記憶體空間

      如果想宣告一個變數而非定義它,就在變數名前新增關鍵字extern,而且不要顯式地初始化變數

       如:extern int i;         //宣告i而非定義i

               int j;                      //宣告並定義j

               extern double pi = 3.1416;       //定義,變數賦了一個值,抵消了extern的作用了。

           如果要在多個檔案中使用同一個變數,就必須將宣告和定義分離,此時,變數的定義必須出現在且只能出現一個檔案中,二其他用到該變數的檔案必須對器進行宣告,絕不可以重新定義。

      C++識別符號

        由字母、數字和下劃線組成,其中必須以字母或下劃線開頭。

      名字的作用域

      全域性作用域;

      塊作用域;

      內層作用域;

      外層作用域;

 2.3  複合型別

     複合型別是指基於其他型別定義的型別。C++語言有幾種複合型別,如引用和指標。

      引用:一個物件的別名,必須初始化。

      指標:指向另外一種型別的複合型別,實現對物件的間接訪問。(1)指標本身是一個物件;(2)指標無須賦值。

      空指標:不指向任何物件。

     void* 指標:可用於存放任何物件的地址。

      指向指標的引用:指標是物件,因此存在對指標的引用,如 int i = 42; int *p; int *&r = p; r = &i; *r=0;

 2.4  const 限定符

     如果想在多個檔案之間共享const物件,必須在變數的定義之前新增extern

      指標和const

      頂層const

 2.5   類型別名

 typedef  double  wages ;            // wages是double的同義詞

 typedef  wages   base, *p;         // base是double的同義詞,p是double*的同義詞。

  auto 型別說明符: auto型別是C++11引入的。

2.6 自定義資料結構

        類義關鍵字struct開始,緊跟著類名和類體,主要類定義的最後加上分號。

        預處理概述:

        #ifndef   SALES_DATA_H

        #define SALES_DATA_H

          ............

        #endif