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


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

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

  1.數據類型可以是內部的或者抽象的。

    • 內建數據類型:
      • 內建數據類型是編譯器可以理解的數據類型,直接與編譯器關聯。C++在這里幾乎完全繼承了C 的數據類型。或者稱為基本數據類型
    • 抽象數據類型:
      • 可以先理解為一個類(C++靈魂的精髓,數據類型:類),它是由我們自己或者別的用戶自行定義的數據類型。(這里學習類的時候在仔細學習)  

 


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

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

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

    

 

 


 2.1 說明符(specifier)

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

      • signed
      • unsigned
      • short
      • long 

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

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

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

      

 

 


 2.2 bool類型

      在bool類型成為C++標准之前,每個人都在用自己的方法實現類似於bool類型的行為。這種方式是很不利於可移植性的。

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

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

      

    因為現在很多代碼使用的是整型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更為穩妥。

 


 

 

 

 

      

   


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM