SQSH1616 12-19 C基礎

一函數

1.函數的基本概念

函數就是把代碼中功能相似并且獨立的代碼單獨封裝成一個整體;

(1)函數優點

提高代碼的簡潔性,挺高開發效率
提高代碼的重用性
有利于程序的維護

(2)函數的分類

系統函數:
由C標準庫提供的函數;如:printf()scanf()gets()
用系統函數時,只需將其對應的頭文件包含起來,即可
exampl:
#include<stdio.h>------>printf("hello!");
pow(a,b);------>計算a的b次方
自定義函數:
用戶根據需要自己定義的函數;
分類二:
有返回值函數:
函數調用結束后,會返回一個數值給主調函數;
無返回值函數;
函數結束后,無返回值,一般定義為viod函數,即空類型
分類三:
有參函數:
參數可以任意多
無參函數:

2.函數的基本定義L

(1)無參函數的定義

DataType FunctionName()
{
//函數體
//可執行語句
}
注:函數名背后的括號不可以省略!!!

(2)有參函數的定義

DataType FunctionName(Type arg1,Type arg2)---->(括號內為參數列表)
{
//函數體
}
注:參數列表可以有多個,參數的類型可以任意(相對)!

(3)函數的定義,函數的聲明以及函數的調用

函數的定義
DataType FunctionName(參數列表);
{
//函數體
}
函數的聲明:
DataType FunctionName(參數列表);
注:
聲明時,參數列表一定要和定義時的參數列表一致!!!
后面的分號不可省略!!
放在函數被調用之前的任意
函數的調用;
FunctionName(value);
value:數值
注:
函數調用時,實參的類型,一定要和函數定義時的形參列表一致!
實參:
實際參數,即具體的數值
函數調用時的參數都是實參
形參;
形式參數,形參的定義和普通變量的定義無區別
函數定義及聲明時的參數
注:函數名表示函數的入口地址,函數之間沒有優先級問題,函數之間是等價的,即平行關系!!!
形參在發生調用時分配空間!!!
在發生我那個函數調用時,系統會默認將實參的值付給形參

3.函數的返回值

無返回值的類型函數類型為:void
DataType FuncName(參數列表)
{
//函數體
}
DataType:決定了函數的返回值類型;
若是int;則函數返回值為int類型
若是double;則函數返回值為double類型
如果函數的返回值能夠在后面的程序中使用,則需要相同類型的變量接收返回值
若是void類型的函數,則無返回值,return可有可無!!!
若返回值不是void類型,則必須要有return!!!

4.return的作用

(1)函數遇到return,則結束后面的代碼不執行

(2)用于返回函數的值即執行結果

5.關鍵字

(1)變量分為全局變量和局部變量

全局變量:
在函數體之外定義的變量
其作用域是從變量定義處開始的,一直到本文的結束!!!
在全局變量定義之前不可使用全局變量
局部變量:
在函數中定義的變量,作用域:整個函數
函數結束時,局部變量會自動消亡!
因此不同的函數中可以使用相同的變量名。
若局部變量和全局變量重名,則全局變量對局部變量不可見
auto:
聲明變量是動態變量
可以省略,如:
動態全局變量:
生命周期:整個函數運行期間
動態局部變量:
生命周期:僅限于定義該變量的函數中
auto int a = 5;
int b = 4;
static:
聲明變量為靜態變量;
作用域:從定義處開始,到文件結束
聲明周期:整個程序運行期間。
靜態變量,若定義是沒有初始化,則系統默認為初始化為:0!
靜態變量只初始化一次!!!
靜態函數:static修飾函數,則此函數只能用于本文件
其他文件不可使用!!!
extern:
聲明為外部變量:extern int sum;
修飾函數:extern int test();
聲明變量或函數在外部已定義;
register:
寄存器變量:變量直接存放在寄存器中
CPU的寄存器個數有限,不可以定義多個寄存器變量
速度快
const:
常量(只讀變量),不可修改其值
const int num = 5;
int const num = 5;
const int p;值不可改
int const p;值不可改
int
const p;地址不可改
const int
const p;地址和值不可改

6.函數的傳遞

值傳遞
地址傳遞

7.指針函數和函數指針

指針函數:
int test();
返回一個局部地址是不允許的,沒有意義
注意返回值問題,返回的是一個地址!!!
函數指針:
int (
pa)()

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • 問題:分支函數如何return:回多個值答:1.直接調用下一個函數,2.全局變量,3.文件,4.鏈表和容器,5.存...
    賦閑閱讀 154評論 0 0
  • importUIKit classViewController:UITabBarController{ enumD...
    明哥_Young閱讀 3,885評論 1 10
  • 前言 把《C++ Primer》[https://book.douban.com/subject/25708312...
    尤汐Yogy閱讀 9,537評論 1 51
  • 燈光下的背影 你在縫縫補補 我只能默默看 夜里出來一看 你還在工作著 淚水打濕了眼 無私奉獻的愛 把它留給了我 卻...
    我愛吃任何魚閱讀 183評論 0 2
  • “我的家鄉在農村,我想回家吃飯了,特向老師請三天假” 這是還在讀小學五年級的小侄子,在上個月寫的一份請假條,原因竟...
    五月成長筆記閱讀 456評論 0 1