嵌入式學習筆記 -- 基礎與硬件(3)

三.嵌入式常用的C語言語法概要

1.爲什麼選擇C語言?

 

2.數據類型

 

3.寄存器類型(register)變量

使用關鍵字“register”聲明變量後,被聲明的變量採用寄存 器存放,從而提高存取效率。不過由於寄存器數量有限,不 能定義任意多個寄存器變量。

 

4.程序流程控制 -- 順序結構,選擇結構,分支結構

1. 順序結構就是從前 向後依次執行語句,從整體上看,所有 程序的基本結構都 是順序結構,中間 的某個過程可以是 選擇結構或循環結 構

2.在C語言中主要有 if 和 switch 兩種選擇結構

3.C語言中的循環結構常用for循環,while循環與do...while循環

 

5.函數

所謂函數把經常使用的語句羣定義成函數,供其他程序調用,函 數的編寫與使用要遵循軟件工程的基本規範。


使用函數要注意

 函數定義時要同時聲明其類型;

 調用函數前要先聲明該函數;

 傳給函數的參數值,其類型要與函數原定義一致;

 函數的返回值:return表達式;

 接收函數返回值的變量,其類型也要與函數類型一致。

 函數傳參有傳值與傳址之分。
 

 

6.數據存儲方式

數組:數組是由基本類型數據按照一定的規則組成的。也可以通過malloc,calloc函數,進行內存空間的動態分配,從而實現數 組的動態化,以滿足實際需求。

指針:指針是一個用來指示一個內存地址的C語 言的變量。注意:任何類型的指針都可以直接賦值給void *類型,無需進行強制類型轉換。

枚舉:枚舉是列出某些有窮序 列集的所有成員,作爲 一種特定類型對象。

結構體:結構體是由一系列具有相同類型或不同類型的數據構成的數據集合。

共用體:幾種不同的變量共同佔用一段內存的結構,被稱作“共用體”類型結構。

空類型:空類型字節長度爲0, 一是明確地表示一個函數不返回任何值;二是產生一個同一類型指針, 然後可根據需要動態地 分配給其內存。

 

7.編譯預處理 -- typedef


  C語言中可以用typedef定義新的類型名,代替已有的類型名.

 用法說明:

(1)用typedef可以定義各種類型名,但不能用來定義變量。

(2)用typedef只是對已經存在的類型增加一個類型別名,而沒有創造新 的類型。

(3)typedef與#define有相似之處,但事實上它們二者不同,#define是在預編譯時處理,它只能做簡單的字符串替代,而typedef是在編譯時處理。

(4)當不同源文件中用到各種類型數據(尤其是像數組、指針、結構體 、共用體等較複雜數據類型)時,常用typedef定義一些數據類型,並把它們單獨存放在一個文件中,然後在需要用到它們時,用#include命令把該文件包含進來。

(5)使用typedef有利於程序的通用與移植。

 

8.編譯預處理 -- 宏定義

宏定義指的是,在編譯時在所有引用宏的地方,都將自動被替換成宏所代 表的表達式。表達式可以是數字、字符,也可以是若干條語句。
 

#define 宏名 表達式


撤銷宏定義:#undef 宏名
 

9.編譯預處理 -- 條件編譯

條件編譯:

#if  表達式      //如果表達式成立,則編譯

#if下的程序 #else 表達式     //否則編譯#else下的程序

#endif          //#endif爲條件編譯的結束標誌。

 

10.編譯預處理 -- 文件包含

所謂“文件包含”是指一個源文件將另一個源文件的全部內容包含進來(實際處理時,就是把文本直接複製粘貼過來) ,其一般形式爲:

#include  “文件名”
 

 

發佈了52 篇原創文章 · 獲贊 548 · 訪問量 37萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章