C語言的型別總結

2021-06-28 07:35:51 字數 4191 閱讀 9159

**:

c語言的資料型別分為基本資料型別、構造型別、指標型別、列舉型別和空型別等幾種。

一、基本資料型別

1.1 整型int

1>short int、short:              佔2個位元組,佔位符:%d %i

2>long int、long:                   佔8個位元組,佔位符:%ld

3>signed int、signed:        佔4個位元組,佔位符:%d %i

4>unsigned int、unsigned:  佔4個位元組,佔位符:%zd

1.2 浮點型float\double

1>float:     佔4個位元組,佔位符:%f

2>double 佔8個位元組,佔位符:%f

3>double型別的精度要比float精度要高

4>佔位符%f預設保留小數點後6位。當要保留精確位數的小數時,可以在%和f中間用.位數表示,如要保留小數點後兩位,佔位符可用%.2f表示。

5>為了跟double區分開來,float 型資料都是以f結尾的,比如5.43f、-2.3f、0.0f。需要注意的是,絕對不能有10f這樣格式的,編譯器會直接報錯,只有小數才允許加上f。

1.3字元char

1>char  佔1個位元組,佔位符:%c

2>char型別儲存在記憶體中的是它的ascii值,如『a』儲存在記憶體中的值是65,當輸出佔位符用%c表示時,輸出a。當輸出佔位符用%d表示時,輸出65。

二、構造型別

2.1 陣列

1>只能由同一種型別的資料組成

2>定義:資料型別 陣列名[元素個數]

3>宣告並初始化的幾種方式

[objc]view plain

copy

"font-size:14px;"

>

intages[

5]=;    

// 全部元素初始化

intages[

5]=;          

//部分元素初始化,其餘的元素預設初始化為0

intages[

5]=;  

//指定下標元素初始化,其餘的元素預設初始化為0

intages=;     

//省略元素個數進行初始化,陣列會根據賦值過去的元素動態分配個數和記憶體給陣列

4>陣列可以作為函式引數進行傳遞,作為引數時可以省略元素個數,並且傳遞的是整個陣列的位址,修改函式形引數組元素的值,會影響到外面的實參陣列

5>陣列當做函式引數傳遞時,會當做指標變數來使用,指標變數在64bit編譯器環境下,佔據8個位元組。因此在c語言中通過形參是獲取不到陣列的實際長度的,需要傳參的時候把陣列長度通過形參的形式傳遞到函式內部。

[objc]view plain

copy

"font-size:14px;"

>

/*設計乙個函式,找出整型陣列元素的最大值

*/#include 

intmaxofarray(

intarray, 

intlength)  

}  return

max;  

}  int

main()  

;  //sizeof(ages)/sizeof(int)獲取到的是陣列的元素個數

intmax = maxofarray(ages, 

sizeof

(ages)/

sizeof

(int

));  

printf("%d\n"

, max);  

return

0;  }

2.2 結構體struct

1>可以由不同型別的資料組成

2>先定義型別,再利用型別定義變數

[objc]view plain

copy

"font-size:14px;"

>    

// 1.定義結構體型別

struct

person  

;  // 2.根據結構體型別,定義結構體變數

struct

person p = ;  

p.age= 3

0;  

p.name

= "rose"

;  struct

person p

2= ;

//初始化時指定成員進行初始化

printf("age=%d, name=%s, height=%f\n"

, p.age

, p.name

, p.height);

3>定義結構體型別時並不會分配儲存空間,當定義結構體變數時才真正分配儲存空間。結構體所占用的儲存空間,必須是最大成員位元組數的倍數

4>結構體型別的作用域:定義在函式外面時,全域性有效。即定義型別的那行開始,一直到檔案結尾。定義在函式(**塊)內部時,區域性有效,即從定義型別的那行開始,一直到函式(**塊)結束。

5>結構體型別不能重複定義

三、指標型別

1>作用:指標就是根據乙個位址值,訪問對應的儲存空間。指標變數只能儲存位址。

2>指標變數的定義:變數型別 *變數名

int *p; //指標變數p前面的int,指明指標變數p只能指向int型別的資料

3>間接操作變數的值

int *p;

int a=10;

p=&a;

*p=20; //*的作用:訪問指向變數p指向的儲存空間

4>指標變數可以作為方法的形參,在方法內對指標形參指向變數的修改,會影響到外面的實參

[objc]view plain

copy

"font-size:14px;"

>#include .h

>  

void

change(

intint

*n);  

intmain()  

void

change(

intint

*n)  

5>清空指標:清空指標後,不能再間接訪問其他儲存空間

p=0;

p= null;

6>指標的其中乙個應用情景:當乙個引數需要返回多個值時,就可以用到指標。比如乙個想在乙個函式裡面返回兩個數的和跟差,可以通過把和作為返回值返回,把差的指標作為形參傳進函式中,對差的值進行操作。

[objc]view plain

copy

"font-size:14px;"

>#include .h

>  

intsumandminus(

intn1, 

intn2, 

intint*n3

);  

intmain()  

// 返回值是

intsumandminus(

intn1, 

intn2, 

intint*n3

)  

7>指標和字串

定義字串的2種方式:

7.1> 利用陣列

char name = "itcast";

* 特點:字串裡面的字元是可以修改的

* 使用場合:字串的內容需要經常修改

7.2> 利用指標

char *name = "itcast";

* 特點:字串其實是乙個常量字串,裡面的字元是不能修改

* 使用場合:字串的內容不需要修改,而且這個字串經常使用

四、列舉型別

1 >使用場合:當乙個變數只允許有幾個固定取值時

2 >先定義型別,再利用型別定義變數

[objc]view plain

copy

"font-size:14px;"

enum

season  

;  // 2.定義列舉變數

enum

season ssummer;  

//enum season s = 100000; //c語言是弱語法,即使賦的值不是列舉中的值,也不報錯。所以賦值的時候需要注意該列舉是怎樣定義的。

五、空型別

1>void 表示函式沒有返回值

C語言 陣列型別 詳細總結

對字 word 半字 half word 位元組 byte 的概念說明如下 1.字 word 在arm體系結構 32位機 中,字的長度為32位,而在8位 16位處理器體系結構中,字的長度一般為16位。2.半字 half word 在arm體系結構 32位機 中,半字的長度為16位,與8位 16位處理...

C語言資料型別總結

1 整型 long long long int short 整數範圍 十進位制 16位機 64 32 16 16 32768 32767 32位機 64 32 32 16 2147483648 2147483646 64位機 64 32 32 16 9223372036854775808 其他 un...

儲存型別 總結C語言的五種儲存型別

記憶體用於儲存程式中的資料,由儲存期 作用域和鏈結表徵。儲存期可以是靜態的 自動的或動態分配的。如果是靜態儲存期,在程式開始執行時分配記憶體,並在程式執行時都存在。如果是自動儲存期,在程式進入變數定義所在塊時分配變數的記憶體,在程式離開塊時釋放記憶體。如果是動態分配儲存期,在呼叫malloc 或相關...