C語言學習 資料型別

2021-08-20 23:19:12 字數 2522 閱讀 3284

資料型別

資料型別:包括兩個方面的內容--資料的表示和對資料的加工操作。

在c語言中,把整型、實型字元型稱為基本的資料型別,又稱整型和實型為數值型。

1.變數與常量

關係:靜中有動,動中有靜。相互依賴,相互影響。(要理解實質,不只是字面上理解)

1.2變數

什麼是變數:其值在作用域內可以被改變的量。每個變數都有自己的乙個名字,在記憶體中佔一定的儲存空間。

變數在使用前需要定義,定義變數,系統就會為其分配儲存空間。每個變數都有自己的位址。

變數依據定義的型別不同,分為不同型別,整型變數,字元型變數,浮點型變數,指標型變數等。

變數的值可以發生改變,意味著它可以被修改、寫入、賦值。

每個變數必須要有乙個名字和它所在的記憶體空間對應。

如: int a;  //a占用了4個位元組---

變數名和它所在的記憶體空間對應

在**中,宣告了整型變數a,它的型別已經決定,大小佔4個位元組,在記憶體中也會有4個連續的位元組與之對應,a變數名就代表了這4位元組的空間,a變數名的位址也就是這連續的4位元組的開始的位址0x000。

在我們說a變數的時候,就知道他是從0x000這四個位址開始的四個位元組,當我們說0x000位址就知道這是a變數的空間。既然a是變數,說明它代表的空間的資料是可以修改的,同樣0x000的位址的資料也是可以修改的。

1.3變數名和變數位址

變數的值是變數所對應的記憶體區域內存放的二進位制序列,變數的值不會因為變數的型別發生改變而改變,當變數被轉換為對應型別時記憶體區域的二進位制序列與該型別的形式翻譯出來,這也是強制型別轉換能成立的原因。

如:char ch='a';

int a=(int)ch;

printf("%d %c\n",a,ch);

ch是字元型別,變數ch是字元a的二進位制數。a是整型變數,a裡面的是字元的二進位制數的整型表示方法,以十進位制數表示出來九十七列印結果為九十七和a。

int add=0x12345678;

int  *p=(int*)add;    

add是乙個整形變數,add是0x12345678的二進位制數,以十進位制表現出來。p是乙個整型指標變數名,p裡面是0x12345678的二進位制數,以位址方式表現出來,代表位址0x12345678,*p是通過*去訪問0x12345678幾個位址處的資料。&p是取出整型指標變數p的位址,因為p是乙個變數,所以它有自己的位址可以讀出它的位址來。

2.區域性變數和全域性變數

函式形參變數只有在被呼叫期間才會分配其記憶體單元,呼叫結束立即釋放。這一點表明形參變數只有在函式內才是有效地,離開了函式就不能再使用了,這種有效性的範圍稱為變數的作用域。c語言中的變數按作用域劃分為兩種,區域性變數和全域性變數。

區域性變數:區域性變數又稱內部變數,是在函式內部定義的,作用域僅限在函式之內。在函式內離開了函式後,再也無法使用這種變數。

例 int f1(int a)//函式f1

int a,b,c;

int f2(int x)//函式f2

int y,z;

int main()//主函式f1

int m,n;

在函式f1內定義了三個變數,a為形參,b、c為一般變數,在f1的範圍內a、b、c有效。或者說a、b、c變數作用域在f1,同理x、y、z的作用域在f2中,m、n的作用域在main函式內。

注意:主函式中定義的變數,只能在主函式中使用,不能在其他函式中使用,同時主函式中也不能使用其他函式定義的變數,因為主函式是乙個函式與其他函式是平行關係。

復合語句中,作用域在只在復合語句範圍內。

1 #include2 //區域性變數 

3 int main()

4

11 printf("%d\n",k);            //在復合語句外定義的由復合語句外定義的k起作用

12 return 0;

13 14 }

結果為

全域性變數

全域性變數是在函式外部定義的變數,它不屬於哪乙個函式,它屬於乙個源程式檔案,其作用域是整個源程式。在函式中使用全域性變數,一般應做全域性變數說明只有在函式內經過說明的全域性變數才能使用。全域性變數的說明符為extern,但在乙個函式之前定義的全域性變數在函式內使用,可不再加說明。

int a,b;   //外部變數

void f1()   //函式f1 

float x,y;    //外部變數

init fz()    //函式fz

int main()        //主函式 

{.......

a、b、x、y都在函式外部定義的外部變數都是全域性變數,但x、y

定義在f1之後,而對f1沒有對x、y說明所以他們在f1無效。a、b在最前面  f1,f2及main 不加說明也可以使用。

常量常量 ,他們可以和資料型別結合起來 。類如,整型常量、浮點型常量、字元常量等。常量是可以不經過定義和初始化而直接引用的,常量又分為直接常量和符號常量。常量的值在其作用域內不會發生變化,也不能被複製,在其出現值的時候就被當作乙個立即數使用,也就是說它只能被訪問、被讀、而不能被寫、被複製。

C語言學習 資料型別

題外話 工作了快一年時間了,感覺只是對mtk平台的開發流程熟悉了而已,而程式設計水平並沒有提高多少。於是乎決定實習的最後兩個月時間給自己充充點,同時溫習一下以前的知識。今天開始資料型別的學習。接下來的都是平時理解不是很深刻的知識點,一些很熟悉的就不涉及了。c語言的資料結構是以資料型別形式出現的。c的...

C語言學習 資料型別

在c語言中,資料型別可以分為以下幾種 型別描述 基本型別 c語言中的算術型別,包含整數型和浮點型 列舉型別 c語言中的算術型別,用來定義在程式中只能賦予其一定的離散整數值的變數。void型別 型別說明符,表示沒有可用的值 派生型別 指標型別 陣列型別 結構型別 公用體型別 函式型別 型別儲存空間 值...

C語言學習 資料型別

a1,a2 其值在其作用域內可以改變的量被稱為變數 變數有名字 一定的儲存空間 變數必須要定義,有位址 對應儲存空間的首位址 變數依據定義的型別分類,它的大小由型別決定。a3 變數所對應的儲存空間內存放的二進位制序列變數的值不會因變數型別改變而改變 當變數轉換為對應型別時,記憶體區域的二進位制序列以...