C++數據類型(data type)介紹

    在編寫程序時,數據類型(data type)定義了使用存儲空間的(內存)的方式。程序員

    程序員經過定義數據類型(data type),告訴特定存儲空間這裏要存儲的數據類型是什麼,以及你即將操做他的方式。(注:存儲空間有:堆存儲,棧,靜態存儲等,後面再仔細去研究)面試

  1.數據類型能夠是內部的或者抽象的。

    • 內建數據類型:
      • 內建數據類型是編譯器能夠理解的數據類型,直接與編譯器關聯。C++在這裏幾乎徹底繼承了C 的數據類型。或者稱爲基本數據類型
    • 抽象數據類型:
      • 能夠先理解爲一個類(C++靈魂的精髓,數據類型:類),它是由咱們本身或者別的用戶自行定義的數據類型。(這裏學習類的時候在仔細學習)  

 


2.  基本內建類型(又稱,基本數據類型

      標準C的內建類型(由C++繼承)沒有說明必須多少位。只是規定了內部數據類型必須能存儲的最大值和最小值。學習

      C++和C內部數據類型有4個基本類型。分別是:char,int, float & double 。(以下介紹:spa

    

 

 


 2.1 說明符(specifier)

      說明符(specifier)用於改變基本內建類型的含義,並把它們擴展爲一個更大的集合,有如下四種:指針

      • signed
      • unsigned
      • short
      • long 

       注:signed (表明有符號)和 unsigned(表明無符號)。由於數據類型在計算機中以二進制存儲,有符號的就會佔去一個比特位來表示符號位。相應的取值範圍也會變小。code

  •   通常上面的四種基本類型能夠再使用一個或多個說明符進行修飾。詳細的參考以下圖示:

        (另外,在面試的時候面試官,若是問到,例如char必定是1個字節嗎?通常會回到視機器而定,通常是一個字節)blog

      

 

 


 2.2 bool類型

      在bool類型成爲C++標準以前,每一個人都在用本身的方法實現相似於bool類型的行爲。這種方式是很不利於可移植性的。繼承

      談到bool,必需要談到兩個內建常量:true(轉換爲整數1) &  false(轉換爲整數0)。(注:內建常量暫不解釋)內存

        此外一些語言元素也被採納,在C++ 中:ci

      

    由於如今不少代碼使用的是整型int表示一個標誌,因此編譯器隱式轉換int爲bool(非零值爲true,零值爲false)

 


  2.3 枚舉類型

    枚舉(enumerated)類型就是指他的值爲符號常量而不是字面值的類型,她們一般如下面形式聲明:    

enum Type{ CUP, PINT, QUART, HALF, GALLON };

    這條語句聲明瞭一個類型,稱爲week。這種類型的變量按下面方式聲明:

enum Type CUP, PINT, QUART, HALF, GALLON ;

    這種變量的存儲方式實際方式是整型的形式,第一個變量是0,第二個是1,以此日後(在不賦值的狀況下)。固然在適當的是後,你能夠選擇賦值特定的整型值。

enum Type{ CUP=1, PINT=5, QUART=3, HALF=11, GALLON };

    如上面,並無對最後一個變量賦值,那麼他的值就比前面一個大1,爲12;    

  


  2.4 typedef

    C語言支持一種叫作typedef的機制(固然C++也是一樣支持的啦,畢竟是繼承了C的優良品性)。他容許你爲各類數據類型定義新的名字。typedef聲明的寫法和普通的聲明基本相同,只是吧typedef這個關鍵字出如今聲明的前面。例以下面的這個聲明:

 

char *ptr_char;

    把變量ptr_char聲明可以爲一個指向字符的指針,可是在你添加關鍵字typedef後,聲明變爲:

typedef char *ptr_char;

    這種聲明吧prr_char做爲只想字符的指針類型的新名字(這裏對指針能夠不瞭解,畢竟還到後面才學的到)。你能夠像使用任何個預約義名字同樣,在下面申明中使用新名字。以下:

 

ptr_char a;

    聲明瞭a指向字符的指針。

    注:typedef與#define仍是有區別的,面試的時候可能會被問到。雖然均可以用來建立新的類型名。可是後者沒法正確的處理指針類型。以下:

#define ptr_char char *
 ptr_char a,b;

    能夠正確的使用a,可是b卻被聲明一個字符。因此一般定義複雜的類型時,選擇typedef更爲穩妥。

相關文章
相關標籤/搜索