- 結構是 C 編程中另一種用戶自定義的可用的數據類型,它允許可以存儲不同類型的數據項。定義結構,您必須使用 struct 語句。
struct Books{
char title[50];
char author[50];
char subject[100];
int book_id;
} book = {"C 語言", "RUNOOB", "編程語言", 123456};
- 共用體:跟結構體類似,用union關鍵字聲明
union Data{
int i;
float f;
char str[20];
} data;
-
C語言類型限定符
const:對象的類型如果采用了限定符 const,則該對象就是常量。在定義該對象之后,程序無法修改它。 - C語言內存模型詳解
- p++是 地址會變化。 口訣:取當前值,然后再移動地址!
(*p)++ 是數值會要變化。 口訣:取當前值,然后再使數值增加1。
例題:int *p,a[]={1,3,5,7,9};
p=a;
請問 * p++和(* p)++的數值分別為多少?
*p++: 這個本身的數值為1。由于是地址會增加一,所以指針指向數值3了。
(*p)++ 這個本身的數值為1。由于有個++表示數值會增加,指針不移動,但數值1由于自加了一次變成了2。
- 類型重命名:
typedef char* va_list; - define a 1+2
- 2.333e-1 就是合法的,且數據是2.333×10-1
- 八進制轉義字符: ‘\141’ 是合法的, 前導的0是不能寫的。
十六進制轉義字符:’\x6d’ 才是合法的,前導的0不能寫,并且x是小寫。
10、變長參數
- 有可能無法確定參數的個數,這是就需要用到變長參數函數,就像標準C函數printf一樣。一般這樣聲明:
void func(char* form, ...); - 前面至少有一個確定的參數。函數體內如何獲取這些參數呢?
函數參數是以數據結構——棧的形式存取,從右至左入棧。因此,從理論上說,我們只要探測到任意一個變量的地址,并且知道其他變量的類型,通過指針移位運算,則總可以找到其他的變量。
11、靜態(tài)變量: static變量及其作用
12、從變量的作用域角度看,變量可分為幾種?
- 按照變量的作用域來分,變量可分為兩種, 即局部變量和全局變量.
局部變量也稱為內部變量.局部變量是在函數內作定義說明的.其作用域僅限于函數內, 離開該函數后再使用這種變量是非法的. - 全局變量也稱為外部變量,它是在函數外部定義的變量. 它不屬于哪一個函數,它屬于一個源程序文件.其作用域是整個源程序。