在編寫程序時,數據類型(data type)定義了使用存儲空間的(內存)的方式。程序員
程序員經過定義數據類型(data type),告訴特定存儲空間這裏要存儲的數據類型是什麼,以及你即將操做他的方式。(注:存儲空間有:堆存儲,棧,靜態存儲等,後面再仔細去研究)面試
標準C的內建類型(由C++繼承)沒有說明必須多少位。只是規定了內部數據類型必須能存儲的最大值和最小值。學習
C++和C內部數據類型有4個基本類型。分別是:char,int, float & double 。(以下介紹:spa
說明符(specifier)用於改變基本內建類型的含義,並把它們擴展爲一個更大的集合,有如下四種:指針
注:signed (表明有符號)和 unsigned(表明無符號)。由於數據類型在計算機中以二進制存儲,有符號的就會佔去一個比特位來表示符號位。相應的取值範圍也會變小。code
(另外,在面試的時候面試官,若是問到,例如char必定是1個字節嗎?通常會回到視機器而定,通常是一個字節)blog
在bool類型成爲C++標準以前,每一個人都在用本身的方法實現相似於bool類型的行爲。這種方式是很不利於可移植性的。繼承
談到bool,必需要談到兩個內建常量:true(轉換爲整數1) & false(轉換爲整數0)。(注:內建常量暫不解釋)內存
此外一些語言元素也被採納,在C++ 中:ci
由於如今不少代碼使用的是整型int表示一個標誌,因此編譯器隱式轉換int爲bool(非零值爲true,零值爲false)
枚舉(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;
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更爲穩妥。