嵌入式LINUX C學習之筆記(第一天)

1、整形和浮點型的存儲方式不同,怎麼存儲就怎麼取出來 ,char int short long存儲方式一樣 只是表示地範圍大小不同 ,float和double是一樣的只是方式有點不同,表示的精度不同。

不要用%f取出整形,也不要%d取出浮點型


char int short long分有符號和無符號  而浮點型 只有有符號沒有無符號

2、void類型的函數和形參

   在函數的返回類型和形參中使用void的意思是  調用該函數時不需要給它傳遞形參   返回值是void表示該函數不需要返回一個有意義的返回值,所以調用者也不要想着 去調用該返回值

void *的時候:void類型的指針  表示該指針一個void類型的數,void類型的數 既可以是char 也可以是float int等  只是我們目前不知道

3、類型轉換

   不同類型的變量是不能直接運算的  也就是說int和float類型不能直接加減運算 

   int a=3;float b=2.5  printf("%f\n",a+b);  輸出是對的 5.5   是編譯器自己進行轉換了 (隱式轉換)

   逐步分析:1、編譯器發現a+b中兩個變量類型不同,於是編譯器會將兩個變量進行隱式轉換  轉換成類型相同的  (會將a轉換成float型,因爲隱式類型轉換默認朝精度更高得範圍更大的方向轉換)  a在a+b這個運算中 a成了3.0    (但是在後面a還是3,其實並不是真的將a轉換成了float類型,而是構造了一個臨時變量將a轉成了float類型的值)


a, b同上  int c=a+b;  printf("%d\n",c);  輸出是5  

      逐步分析:編譯器發現a,b類型不同,分析同上  得到5.5 但是賦值的時候發現5.5是float類型,c是int 型  因此會強制將5.5轉換成int型   結果是5

4、c語言中原生沒有bool類型    c++有

  所以在C語言中bool不是關鍵字   C語言中如果需要bool類型  則就用 int 代替  (雖然有一點浪費啦,int 32bits )

  #define TRUE 1

#define FALSE 0

在BOOL世界裏 只有0是假,其他全部是真

switch(整形,字符或者表達式反正不能是浮點型)

可以用touch新建文件


5、局部變量和全局變量對比:

    (1)局部變量你沒有初始化的話值是隨機的 全局變量的話整形是0  

(2)全局變量分配在數據段上,局部變量分配在棧上

6、內存有四區:數據取,代碼區,堆區、棧區

所謂數據段:存儲的是數,像全局變量,靜態變量就是存儲在數據段,數據段是在程序運行前就準備好的,程序運行後就銷燬的

代碼段:存儲的是程序代碼,一般是隻讀的 

棧 stack(先進後出):臨時存放數據的區域

堆(動態):new出來的對象和malloc向內存申請的內存   就存放在堆中


6、register變量  register int a;

reigister是C語言的一個關鍵字  寄存器型變量  和普通的變量是一樣的  ,特點是 該類型的變量被引用的速度是最快的的  (C語言承諾會在運行時將該類型變量儘量的放到寄存器中,不在內存中,速度就快了,普通的變量是放在內存中的)


7、全局變量的定義和初始化在MAIN函數運行之前發生的

8、在一個程序中,不管是同一個文件還是不同的文件,不能出現名字相同的函數。。一旦重複編譯器就會報錯。

 因爲編譯器調用函數時是根據函數名來調用函數的,一旦重複,編譯器就不知道調用的是哪一個了。

9、調用別的c文件的全局變量,只要在該c文件extern 一下該變量即可  (extern可置於變量或者函數前,以表示變量或者函數的定義在別的文件中,提示編譯器遇到此變量或函數時,在其它模塊中尋找其定義)

   extern的時候不能給變量賦初值

 


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章