控制流
略
函數
-
一個程序可以保存在一個或者多個源文件中,各個文件可以單獨編譯,並可以與庫中已編譯過的函數一起加載.
-
函數默認返回值類型是int.
-
函數在源文件中出現的次序可以是任意的.
-
函數聲明可以包含參數,也可以不包含.
-
如果沒有聲明,會隱式聲明返回int,並不對參數做任何猜測.
作用域
-
外部變量或函數的作用域從聲明它的地方開始.到文件末尾結束.
-
如果要在外部變量定義之前使用該變量,或外部變量定義與使用不在同一個源文件中,需要在生命中強制性使用extern
-
聲明與定義區分開很重要,聲明用於說明變量屬性,定義將引起存儲器分配
- 這個叫定義
int sp;
double val[MAXVAL];
- 這個叫聲明
extern int sp;
extern double val[];
-
外部變量只可以定義一次,但可以聲明若干次訪問它.
- 定義變量的源文件,也可以聲明該變量.
頭文件
一堆聲明. 剩下的由編譯器完成鏈接.
靜態變量
所在源文件可以共享,但並不想共享給所有源文件.
static char buf[BUFSIZE];
static int bufp = 0;
// 聲明和定義一起了.
-
如果聲明靜態函數,則類似於私有函數.只能夠由當前文件訪問.
-
static 出現在函數中,會讓局部變量一直佔據內存. – 還沒太想明白具體用法.是不是可以實現類似閉包的功能.
寄存器變量
register int x;
register char c;
-
告訴編譯器,將該變量一直放在cpu的寄存器中,編譯器可以忽略此選項.
-
只可以應用在局部變量和形參中.
-
寄存器變量的地址是無法訪問的.