C語言定義的變量有哪些?
你好,一個八年C語言編程經驗的工程師來回答你的提問,關于C語言定義的變量有哪些?分別存儲幾個字節?根據我的經驗,回答如下:
首先,考慮不同硬件平臺的特性問題
可以說C語言是一門跨平臺可編譯的編程語言,同一段代碼,只要對應的硬件平臺有編譯器的支持,就可以編譯運行,所以我們在說C語言的變量類型和存儲空間時首先要考慮平臺的差異,比如我們8位的單片機80C51,16位的Intel 8086處理器,我們的32位的ARM和PowerPc,或者DSP芯片,再比如我們常見的64位MIPS處理器,它們有不同的指令集,編譯器,還有支持的位數,同一個C語言的類型,在不同處理器上可能占有的空間不一樣,所以我以下回答拿最常見的32位處理器為例說明。
其次,關于C語言常用變量類型
C語言中變量的類型基本分為:整型,浮點型,字符型,數組,結構體,枚舉和聯合體等,下面分類說明:
1、整型變量
一般整型變量 就是我們經常寫的int型,整型變量又分為短整型short int 。由于符號的加入,又分為有符號和無符號之分。所以總結如下:
無符號整型 unsigned int
有符號整型 (signed) int
無符號半整型 unsigned short (int)
有符號半整型 (signed) short (int)
括號內部分可省略
2、浮點型
有單精度和雙精度之分:
單精度 float
雙精度 double
3、字符型
按有無符號:
有符號 (signed) char
無符號 unsigned char
4、數組
按緯度分
一維數組 type Buffer[ ]
二維數組 type Buffer[ ][ ]
多維數組 type Buffer[ ][ ]……[ ]
5、結構體
struct name
{
type1 value1;
type2 value2;
……
typen valuen;
}
6、枚舉
enum name
{
name1,
name2,
……
namen
}
7、聯合體
union name
{
value1 ,
value2,
……
valuen
}
然后,關于不同類型存儲字節數
32位處理器前提下
整型:4字節
短整型:2字節
字符型:1字節
數組: 類型字節數*數組元素個數
結構體:結構體內所有元素空間和
備注:考慮編譯器對于結構體的字節對齊操作,可使用#pragma pack(n)預編譯指令,對齊結構體,然后計算
枚舉:4字節
聯合體:體內最大元素所占空間
最后,動態獲取變量大小
如果不確定當前硬件平臺,指定變量的占用空間情況,可使用sizeof關鍵字進行計算,比如sizeof(int),會計算出占用字節數,括號可省略。
以上回答是我個人的經驗總結,純手工敲鍵盤打出來的,希望對你有幫助。
喜歡可以點贊,關注哦。