SQSH1616 12-19 C基礎(chǔ)

一函數(shù)

1.函數(shù)的基本概念

函數(shù)就是把代碼中功能相似并且獨(dú)立的代碼單獨(dú)封裝成一個(gè)整體;

(1)函數(shù)優(yōu)點(diǎn)

提高代碼的簡潔性,挺高開發(fā)效率
提高代碼的重用性
有利于程序的維護(hù)

(2)函數(shù)的分類

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

2.函數(shù)的基本定義L

(1)無參函數(shù)的定義

DataType FunctionName()
{
//函數(shù)體
//可執(zhí)行語句
}
注:函數(shù)名背后的括號不可以省略!?。?/p>

(2)有參函數(shù)的定義

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

(3)函數(shù)的定義,函數(shù)的聲明以及函數(shù)的調(diào)用

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

3.函數(shù)的返回值

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

4.return的作用

(1)函數(shù)遇到return,則結(jié)束后面的代碼不執(zhí)行

(2)用于返回函數(shù)的值即執(zhí)行結(jié)果

5.關(guān)鍵字

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

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

6.函數(shù)的傳遞

值傳遞
地址傳遞

7.指針函數(shù)和函數(shù)指針

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

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

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

友情鏈接更多精彩內(nèi)容