c基礎語法-常用關鍵字
變數
在計算機中,整數是以補碼形式存放的。所以如果整數的最高位是1,有符號數的話就是負數;如果是無符號數,則都表示正數
整形 int ->32 -2^31~2^31
無符號整形 unsigned int ->32 2^31
volatile unsigned int
volatile 不穩定的,易變的,告訴編譯器要謹慎處理
什麼時候用 volatile,3種情況
1.中斷服務函式的共享變數
2.多執行緒的共享變數
3.暫存器變數 (舉例,感測器拿到資料更改暫存器的某一位)
相同點: 這三種情況 都屬於 不屬於main函式控制的範圍
在程式設計中 使用 int short char
typedef unsigned int u32
typedef unsigned short u16
typedef unsigned char u8
一個c程式碼檔案編譯過程:
預處理,詞法分析,語法分析,語義分析,編譯為彙編,連結庫檔案
a.c/a.h->a.i->a.s->a.o
一個c在執行時包括什麼?
程式碼段 .text
資料段 .data 被初始化的全域性變數 volatile unsigned int b=1;
BSS(未初始化資料段) 沒有被初始化的全域性變數 unsigned int a;
棧
堆
關鍵字
static------extern
作用1 限定作用域
作用域: 在一個.c中, 在一個函式中, 定義了static變數,不做初始化時,預設會自動初始化為0(資料放在資料段.data 的靜態區)
作用2 在一個函式中定義static時,呼叫過程中其值不變
作用3 在模組中定義static時, 被定義者只能被本模組使用(類似於私有變數/函式)
#define 僅僅是字串常量替換,資料型別跟平臺相關
const 只讀, 能指定資料型別
#define PI 3.141592653 (資料型別不明確,需要看平臺)
const float PI=3.141592653 (精確指定用float型別)