J.J的學習筆錄之C語言部分——函數(一)

本文深入解析C语言中的函数概念,包括定义、调用、返回值等,并探讨了变量的作用域及存储类型,如局部与全局变量的区别,以及静态与动态存储。

C語言,又稱爲函數語言,它的全部工作都是由各式各樣的函數完成的。 在C語言中,從函數定義的角度看,函數可以分爲内置函數和自定義函數兩种。内置函數是由C語言系統提供,用戶無需定義,也不必在程序中作類型説明,只需要在程序前包含有該函數定義的頭文件。在這裡,我主要總結一下自定義函數。

一、函數定義
  1、語法:返回值類型 函數名稱(參數數據類型1 參數名稱1,...);
  2、函數定義的參數表里給出的參數名稱為函數的形式參數,簡稱形參;
  3、在一個函數體内不能再定義另一個函數,即不能嵌套定義;
  4、函數聲明不是必須的,但是,如果一個函數是定義在后,調用在前,那麽就需要在調用之前聲明。

二、函數調用
  在調用函數時,控制流將轉換至函數,當函數執行完畢后,程序從函數調用后的下一個語句繼續執行。

三、函數的返回值
  1、返回語句語法: return  (<表達式>);
  2、當遇到return語句時,函數執行將停止,程序控制流將立即返回調用函數;
  3、當return語句作爲條件結構的一部分時,根據條件判斷的結果,兩條return語句中只有一條將被處理。

四、變量的作用域
  C語言中的變量,按作用域範圍可以分爲兩种:局部變量和全局變量;
  ——局部變量也稱爲内部變量,是在函數内部聲明的,作用域僅僅限制于該函數内部;
  ——全局變量也稱爲外部變量,在函數外部聲明,作用域為整個源程序,相對于局部變量理解就容易些。

五、存儲類型
  1、變量的存儲方式可分爲:靜態存儲和動態存儲兩种。
  ——靜態存儲,通常是在定義變量時就分配存儲單元,並且一直保持不變,直至整個程序結束
    (全局變量就屬於此類存儲類型);
  ——動態存儲,通常是在程序執行過程中,使用它時才分配存儲單元,使用完畢立即釋放
    (函數的形式參數,在函數定義時並不給形參分配存儲單元,只是在函數被調用時才予以分配,
    調用完畢則立即釋放)。
  2、C語言中的存儲類型:auto  自動變量;register 寄存器變量;static 靜態變量;extern 外部變量。
  3、C語言規定,未加説明的變量均視爲自動類型,也就是說自動變量可以省去説明符auto。
  4、局部變量在默認情況下,其存儲類型為auto。
  5、當一個變量頻繁讀寫時,必須要反復訪問内存,從而耗費大量的存取時間,通常在这种情況下,該變量使用寄存器變量,即register,該種類型的變量存放在CPU的寄存器中,使用時不需要訪問内存,而直接從寄存器中讀寫,這樣可以提高效率。这一點,值得我們注意。(並不是所有的編譯器都支持該類型)
  6、外部存儲類型extern的變量,生存期非常長,它在整個程序運行結束之後才釋放内存,由於其作用域非常大,所以安全性較差。
  7、靜態類型static的變量,生存期雖然為整個源程序,但是其作用域與自動變量auto相同,即只能在定義該變量的函數内部使用。
  8、靜態局部變量若在説明時未賦值,則系統自動賦予0值,自動變量則不同。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值