C 資料型別(data type)介紹

2022-01-10 12:30:49 字數 1862 閱讀 1667

在編寫程式時,資料型別(data type)定義了使用儲存空間的(記憶體)的方式。

程式設計師通過定義資料型別(data type),告訴特定儲存空間這裡要儲存的資料型別是什麼,以及你即將操作他的方式。(注:儲存空間有:堆儲存,棧,靜態儲存等,後面再仔細去研究)

抽象資料型別:

標準c的內建型別(由c++繼承)沒有說明必須多少位。只是規定了內部資料型別必須能儲存的最大值和最小值。

c++和c內部資料型別有4個基本型別。分別是:char,int, float & double 。(如下介紹:

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

注:signed (代表有符號)和 unsigned(代表無符號)。因為資料型別在計算機中以二進位制儲存,有符號的就會占去乙個位元位來表示符號位。相應的取值範圍也會變小。

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

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

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

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

因為現在很多**使用的是整型int表示乙個標誌,所以編譯器隱式轉換int為bool(非零值為true,零值為false)

列舉(enumerated)型別就是指他的值為符號常量而不是字面值的型別,她們通常以下面形式宣告:

enum type;
這條語句宣告了乙個型別,稱為week。這種型別的變數按下面方式宣告:

enum type cup, pint, quart, half, gallon ;
這種變數的儲存方式實際方式是整型的形式,第乙個變數是0,第二個是1,以此往後(在不賦值的情況下)。當然在適當的是後,你可以選擇賦值特定的整型值。

enum type;
如上面,並沒有對最後乙個變數賦值,那麼他的值就比前面乙個大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更為穩妥。

C語言資料型別介紹

型別 範圍位元組 int 2147483648 2147483648 32768 32767 4unsigned int 0 4294967295 4short int 32768 32767 2unsigned short int 0 65535 2long int 2147483648 2147...

C語言 介紹資料型別

在c語言中定義了很多資料型別,這篇文章主要用於記錄我對於資料型別的理解。對於c語言為什麼需要資料型別這個東西呢?其實資料型別是為了更好的進行記憶體的管理,告訴編譯器需要分配多少記憶體。比如 我們定義int a 10 對於整數10來說,採用int型別就綽綽有餘,因為int 型別可存放 231 231 ...

獲得某列的資料型別(DataType)等資訊

select table catalog as database table schema as owner,table name as tablename,column name as columnname,ordinal position as ordinalposition,column de...