資料型別另思

2021-05-22 01:04:25 字數 1358 閱讀 4843

c語言中包括了豐富的資料型別,包括了宣告中顯式定義的型別和用做表示式中間型別的匯出型別。例如:

int  *p, x;

*p = x;

從這裡我們可以知道x的位址型別(它的左值)是乙個指向整數的指標。x值的型別(它的右值)是乙個整數。

c語言的型別其實可以用字首形式表示,什麼是字首形式呢,看下面的例子:

我們用乙個表示式: a + b*c - (d + e) ,對於這樣的表示式好像都熟悉,它就是所謂的中綴表示式

它的字首表示式是: -+a*bc+de;求解過程就不詳述了,但有一點就是,我們可以看到字首表示式運算元在操作符之後 。

同樣我們可以把c語言的型別定義為型別操作符和型別運算元的結合,而我們平時所看到的則是這種定義的「中綴表示式」,再回到剛才的例子,

int  *p 宣告了p是指向int的乙個指標,所以這裡int *,指標是操作符,int是運算元.

我們再看乙個例子: char *(*strings)[10].

如果根據《c專家程式設計》裡講的,我想你很快就會明白這個宣告的含義, 我們根據此書裡的步驟分析一下:

通過上面的分析,可以知道: strings是乙個指標,指向乙個大小為10為陣列,每個陣列元素是乙個指標,指向字元的指標.

其實如果把它表示為字首的形式,該是什麼樣的呢:

(pointer (array 10 ( pointer (char) ) ) )

其中pointer為操作符,剩下的為它的運算元,以此類推,array也為操作符,剩下的是它的運算元,等等。

上面所說的pointer,array,char等都是型別操作符的編碼,這些操作符所帶有的運算元是不同的,下面首先列出所有的操作符編碼:

char             long         array          function         int             enum            struct           const

unsigned   float        union           volatile           short     double        pointer         void

其中操作符char, int, unsigned, short, long ,enum定義了整數型別,float, double定義了浮點型別,這些型別都為算術型別,除了enum以外,其他的都沒有運算元. array, struct, union為聚合型別,struct和union沒有運算元,array的運算元是陣列元素的型別;pointer和function分別定義為指標型別和函式型別,它們的運算元分別指明被引用型別和返回型別.

下面舉個例子:

(array  40 (int  4  ) )

它的實際表示就是 int a[40];

資料型別基礎資料型別

資料型別 基礎型別 除八大基礎型別其他的都是引用型資料型別 引用資料型別 基礎資料型別 整型 byte 佔乙個位元組,範圍 128 127 short 佔兩個位元組,範圍 32768 32767 int 最常用 佔四個位元組,範圍 2147483648 2147483647 long 佔八個位元組 ...

資料型別 基本資料型別和引用資料型別

一.分類 1,五種簡單資料型別 基本資料型別 number,string,boolean,null,undefined,新增symbol es6 基本資料型別是指存放在棧中的簡單資料段,資料大小確定,記憶體空間大小可以分配,它們是直接按值存放的,所以可以直接按值訪問。1 undefined 宣告的變...

SQL 資料型別 MySQL 資料型別

在 mysql 中,有三種主要的型別 文字 數字和日期 時間型別。資料型別 描述char size 儲存固定長度的字串 可包含字母 數字以及特殊字元 在括號中指定字串的長度。最多 255 個字元。varchar size 儲存可變長度的字串 可包含字母 數字以及特殊字元 在括號中指定字串的最大長度。...