函數和變量小知識

一,函數

要使用函數必先得聲明包含它的庫,這和變量的先聲明再使用一樣。數學函數位於libm,so庫文件中(這些文件通常位於/lib目錄下),編譯有數學函數的代碼時gcc命令行必須加-lm選項,一般gcc默認libc.so庫函數。Linux平臺上最廣泛使用的是glibc庫。

$?是shell中表示上一條命令的退出狀態。函數聲明和定義和變量聲明、定義一樣,前者不分配內存,後者分配。函數聲明要包含函數的類型、函數名、參數類型。沒有聲明類型的函數默認返回值爲void型,此型不能參與運算。

形參一般指函數聲明參數時的參數名如,int add(int a,int b)中的a和b,實參是指傳入的真值,如main中調用上述函數時有add(5,6)中的5,6就是實參。

Man pag 分成8個section,1指用戶命令,2指系統調用,3指庫函數,4指特殊文件,5指系統配置文件的格式,6指遊戲,7指其他雜項,8指系統管理命令。

二.變量

函數調用時給這個函數分配空間,用來存儲這個函數用到的變量、參數,函數用完後釋放空間,返回值用一個新的空間存儲,返回值用過一次後就馬上釋放相應空間。多次調用同一個函數時,也多次分配不同的空間。

全局變量可以在不同函數中使用,局部變量則只能在其作用域使用;全局變量聲明是默認爲0,局部變量默認是隨機數,即不確定;全局變量初始化時只能用常量初始化,

如double pi=3.14+0.0016;是合法的,但double pi=acos(-1.0);是不合法的,因爲pi要執行acos(-1.0)後才能賦值,而局部變量可以這樣初始化;全局變量 intminute=360;  int hour= minute / 60;也是不可以這麼初始化的,因爲minute / 60 不是常量表達式,編譯器不會先去算。

非定義的函數允許在局部作用域中聲明,如

                     Int main(void)

                     {

                            Voidprint_time(int,int);

                            Print_time(23,59);

}

       是可以的,但是只能在main函數中使用。另外,雖然可以在一個函數中聲明另一個函數,但不能定義另一個函數,c語言不允許嵌套定義函數。但gcc的擴展特性允許嵌套定義函數,不太瞭解這個。

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