【C语言基础】-数据类型大小
提示:文章寫完后,目錄可以自動生成,如何生成可參考右邊的幫助文檔
文章目錄
- 前言
- 一、基本數據類型
- 整型
- 字符型
- 實型(浮點型)
- 二、構造數據類型
- 數組類型
- 結構體類型
- 結構體匿名聲明
- 結構體對齊方式
- 共用體(聯合)類型
- 共用體(聯合體)大小
- 枚舉類型
- 三、指針類型
- 四、空類型
前言
c語言的數據類型如下圖所示:
一、基本數據類型
基本數據類型最主要的特點是其值不可以再分解為其它類型。也就是說,基本數據類型是自我的說明。
整型
整型可以用十進制,十六進制或八進制符號指定,前面可以加上可選的符號(- 或者 +)。包括整型常量和整型變量,整型變量又包括短整型、基本整型、長整型,它們都分為有符號和無符號兩種版本,是一種智能的計算方式。
短整型:short int (2字節) (-32768~32767) 整型: int (2字節) (-32768~32767) 長整型:long int (4字節)(-2147483648~2147483647) 長長整型:long long (8字節)-9223372036854775808~+9223372036854775807(約九百億億) 長長整型:__int64 (8字節)-9223372036854775808~+9223372036854775807 短整型:unsigned short int (2字節) (0~65535) 整型: unsigned int (2字節) (0~65535) 長整型:unsigned long int (4字節) (0-4,294,967,295) 長長整型:unsigned long long (8字節) 0~18446744073709551615 長長整型:unsigned __int64 (8字節) 0~18446744073709551615字符型
包括中文字符、英文字符、數字字符和其他ASCⅡ字符,其長度(即字符個數)范圍是0-255個字符,即0x00至0xFF。
字符型:char (1字節) (-128~127) 字符型:unsigned char (1字節) (0~255)實型(浮點型)
實型也稱為浮點型。實型常量也稱為實數或者浮點數。在C語言中,實數只采用十進制。它有二種形式:十進制小數形式,指數形式。
單精度型:float (4字節)(3.4E-38~3.4E+38)(7位有效數字) 雙精度型:double (8字節)(1.7E-308~1.7E+308)(16位有效數字) 長雙精度型:long double (10字節)(19位有效數字)二、構造數據類型
構造數據類型是根據已定義的一個或多個數據類型用構造的方法來定義的。也就是說,一個構造類型的值可以分解成若干個“成員”或“元素”。每個“成員”都是一個基本數據類型或又是一個構造類型。在C語言中,構造類型有以下幾種:
數組類型
數組是在程序設計中,為了處理方便, 把具有相同類型的若干元素按有序的形式組織起來的一種形式。
int a[10] = { 1, 2 }; // 氣他元素初始化為0 char b[10]; //局部變量隨機數,全局變量為0 int c[20] = { 0 }; // 編譯器在編譯的時候就已經確定了所有元素的值為0例:c是數組首元素的地址, &c是整個數組的地址
c+1 往后是跳4個字節 &c+1 往后跳80個字節
結構體類型
結構體是一個聚合數據類型;將相同或不同類型的元素放到一起,結構體內存布局和數組基本一致,結構體內部第一個成員變量的地址最低;
struct A {int a;char b[20];short c; };//分號不能丟struct A為結構體名,{ }內為成員變量,}后必須加;
其他形式的結構體聲明
結構體匿名聲明
struct {int a;char b;float c; }A;//A 為結構體變量 使用需要重新命名 struct {int a;char b;float c; }a[20],*p;//a[20]為結構體數組,p為結構體指針,指向結構體 struct Node {int data;A a;//結點 };結構體對齊方式
#pragma pack(8)//設置最大對齊數 struct A {char c1;//1int i;//4char c2;//1 };//分號不能丟1+3+4+1+3 #pragma pack() #pragma pack(1) struct B {char c1;//1int i;//4char c2;//1 };//分號不能丟1+4+1上面兩段代碼 成員變量類型完全相同,struct A 大小是12,struct B大小是6
共用體(聯合)類型
結構體的各個成員會占用不同的內存,互相之間沒有影響;而共用體的所有成員占用同一段內存,修改一個成員會影響其余所有成員。
//先定義共用體類型,在定義共用體變量 union data {int m;float x;char c; };union data a, b; //定義共用體類型的同時定義共用體變量 union data {int m;float x;char c; }a, b; //直接定義共用體變量 union {int m;float x;char c; }a, b;共用體(聯合體)大小
共用體的大小就是最寬基本成員大小,但是要整除最寬基本成員大小。
// An highlighted block union str {char c[13];int m; };共用體大小str為16
枚舉類型
枚舉類型(也稱為枚舉)為定義一組可以賦給變量的命名整數常量提供了一種有效的方法。
typedef enum {SPRING("春天"),SUMMER("夏天"),FALL("秋天"),WINTER("冬天"); }eSeason; eSeason season;三、指針類型
指針是一種特殊的,同時又是具有重要作用的數據類型。其值用來表示某個變量在內存儲器中的地址。雖然指針變量的取值類似于整型量,但這是兩個類型完全不同的量,因此不能混為一談。
64位處理器上64位操作系統的64位編譯器,指針大小8字節。64位處理器上64位操作系統的32位編譯器,指針大小4字節。 64位處理器上32位操作系統的32位編譯器,指針大小4字節。32位處理器上32位操作系統的32位編譯器,指針大小4字節。四、空類型
調用函數值時,通常應向調用者返回一個函數值。這個返回的函數值是具有一定的數據類型的,應在函數定義及函數說明中給以說明。
函數頭為:int max(int a,int b);其中“int ”類型說明符即表示該函數的返回值為整型量。 函數頭為:void max(int a,int b);其中“void”類型說明符即表示該函數的返回值為空類型。1.C中規定void類型的指針可以強制轉化為任意的其他類型指針使用。
2.Visual Studio中每個空類型的實例占用1字節的空間。
總結
以上是生活随笔為你收集整理的【C语言基础】-数据类型大小的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 2022年化工自动化控制仪表考试题模拟考
- 下一篇: POE原理,千兆POE供电分离方案