linux C 學習筆記 第三天控制流和函數

控制流

函數

  • 一個程序可以保存在一個或者多個源文件中,各個文件可以單獨編譯,並可以與庫中已編譯過的函數一起加載.

  • 函數默認返回值類型是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的寄存器中,編譯器可以忽略此選項.

  • 只可以應用在局部變量和形參中.

  • 寄存器變量的地址是無法訪問的.

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