一乳绕,函數(shù)
1.函數(shù)的基本概念:函數(shù)就是把代碼中功能相似并且獨立的代碼單獨封裝成一個獨立的整體。
(1)函數(shù)的優(yōu)點:
提高代碼的簡潔性困鸥,提高開發(fā)效率。提高代碼的重用性米碰,有利于程序的維護窝革。
(2)函數(shù)的分類
分類一:
系統(tǒng)函數(shù):
由c系統(tǒng)提供的函數(shù)购城;如printf(),sanf()……
用系統(tǒng)函數(shù)時虐译,只需將其對應的頭文件包含進來即可
如:#include <stdio.h>------->printf("hello");
小寫字母轉大寫字母:toupper()
大寫字母轉小寫字母:tolower(瘪板;)
自定義函數(shù):
用戶根據(jù)自己需要定義的函數(shù)
分類二:
有返回值函數(shù):函數(shù)調(diào)用結束后,會返回一個數(shù)值給主調(diào)函數(shù)漆诽;
無返回值函數(shù):函數(shù)結束后侮攀,無返回值,一般定義為void類型厢拭,即空類型兰英。
分類三:
有參函數(shù):參數(shù)可以任意多個
無參函數(shù):沒有參數(shù)
2.函數(shù)的基本定義
(1)定義無參數(shù)函數(shù)
datetype functionname(){
//函數(shù)體
//可執(zhí)行語句
}
注:函數(shù)名后的括號不可以省略!9畦贸!
(2)有參函數(shù)的定義
datetype functionname(參數(shù)列表){
//函數(shù)體
}
注:參數(shù)列表可以有多個楞捂,參數(shù)的類型可以任意(相對)1』怠!寨闹!
(3)函數(shù)的定義胶坠、聲明及調(diào)用
函數(shù)的定義:
datetype functionname(參數(shù)列表){
//函數(shù)體
}
函數(shù)的聲明:
datatype functionname(參數(shù)列表);
注:聲明是參數(shù)列表一定要和定義是的參數(shù)列表一致7北ぁ沈善!
函數(shù)的調(diào)用:
function name(value);
value:數(shù)值
注:函數(shù)調(diào)用時,實參的值類型一定要和函數(shù)定義時的形參列表一致!!!
實參:實際參數(shù)椭蹄,即具體的返回值
形參:形式參數(shù)闻牡,形參的定義和普通變量的定義無區(qū)別。
注:函數(shù)名表示
3.函數(shù)的返回值
無返回值的類型函數(shù)類型為:void
datatype functionname(參數(shù)列表){
//函數(shù)體i
}
datetype:決定了函數(shù)的返回值類型绳矩,若是int則返回值類型是int型
如果的返回值能夠在后面的程序中使用澈侠,則需要相同類類型的變量接受返回值。若是void類型的函數(shù)埋酬,則無返回值。return可有可無烧栋,反之必須要rieturn
4.return的作用
(1)函數(shù)遇到return写妥,則結束,后面的代碼不再執(zhí)行
∩笮铡(2)用于返回函數(shù)的值即執(zhí)行結果
4.關鍵字
(1)變量分全局變量和局部變量珍特;
全局變量:在函數(shù)體之外定義的變量;其作用域從變量的聲明開始到結束
局部變量:在函數(shù)中定義的函數(shù)魔吐,其作用域為整個函數(shù)扎筒。函數(shù)結束時莱找,局部變量自動消亡。因此不同的函數(shù)中可以使用相同的變量名嗜桌。
auto:聲明變量是動態(tài)變量奥溺,可以省略。
生命周期(動局):僅限于定義該變量的函數(shù)中骨宠。
生命周期(動全):從生命開始到程序結束浮定。
如:(auto) int a=1;
static:聲明變量為靜態(tài)變量;
靜態(tài)變量定義時沒有初始化层亿,則系統(tǒng)默認初始化為:0
extern:
聲明為外部變量:external int num桦卒;
修飾函數(shù):extern int test();
聲明變量或函數(shù)在外部已經(jīng)定義
registre:
寄存器變量:變量直接存放在寄存器中
CPU的寄存器個數(shù)有限匿又,不可以定義多個寄存器變量
const:
5.函數(shù)的傳參
值傳遞:
地址傳遞:
6.指針函數(shù)和函數(shù)指針
指針函數(shù):
int *test()方灾;
返回一個局部地址是不允許的,沒有意義碌更,注意返回值問題裕偿,返回的是一個地址
函數(shù)指針:
作業(yè):
1.通過函數(shù)比較兩個數(shù)的大小
int dx(int a,int b){
if(a==b){
return 0;
}else if(a>b){
return a;
}else{
return b;
}
}
int main(){
int c=dx(5,5);
if(c==0){
printf("兩個數(shù)相等!针贬!\n");
}else{
printf("%d\n",c);
}
}
2.編寫一個程序击费,用于產(chǎn)生20個0~10之間的隨機數(shù),將這20個隨機數(shù)存入數(shù)組桦他,并通過函數(shù)統(tǒng)計這些隨機數(shù)中某個數(shù)出現(xiàn)的次數(shù)蔫巩。
int sj(int *a){
srand(time(0));
int i=0;
int list[20];
int f=0;
for(i=0;i<20;i++){
list[i]=rand()%10;
printf("%d\n",list[i]);
}
for(i=0;i<20;i++){
if(*a==list[i]){
f++;
}
}
printf("這個數(shù)一共出現(xiàn)了: %d 次",f);
}
int main(){
int num=0;
printf("input num: ");
scanf("%d",&num);
sj(&num);
}