這篇介紹C語(yǔ)言里函數(shù)的定義、子函數(shù)的使用。接著介紹變量的作用域,定義全局變量、靜態(tài)變量、只讀變量、變量初始化等等。
一、函數(shù)定義
//定義一個(gè)函數(shù)
int func(int a,int b)
{
}
<函數(shù)的返回值類型> <函數(shù)名稱>(函數(shù)的形參列表,....)
{
函數(shù)代碼主體部分;
}
<函數(shù)的返回值類型>: 返回值類型可以是C語(yǔ)言支持任何類型?;緮?shù)據(jù)類型、指針、結(jié)構(gòu)體、枚舉…
如果函數(shù)執(zhí)行完畢,不需要返回值,可以將函數(shù)返回值類型聲明為空類型。Void
函數(shù)名稱 :不能與庫(kù)函數(shù)名稱沖突,命名規(guī)則與變量命名規(guī)則一樣。
函數(shù)的形參列表 :函數(shù)在執(zhí)行行傳入的參數(shù),類型與返回值類型定義方法一樣。
如果有多個(gè)形參,可以使用逗號(hào)隔開(kāi)
函數(shù)的返回值: 如果函數(shù)執(zhí)行完畢之后需要向調(diào)用處返回?cái)?shù)據(jù),可以使用return,該語(yǔ)句只能返回一個(gè)值。
int func(int,int); //聲明func函數(shù)
//int func(int a,int b);//聲明func函數(shù)
int main(void)
{
int a;
a=func(12.34,56.78); //形參傳入之后,會(huì)轉(zhuǎn)為整型
printf("a=%d ",a);
return 0;
}
//定義一個(gè)函數(shù)
int func(int a,int b)
{
int c;
c=a+b;
return c; //給調(diào)用者返回結(jié)果
}
二、函數(shù)練習(xí)作業(yè)
(1)編寫(xiě)一個(gè)判斷某一年是否是閏年的函數(shù)。(條件: 能整除4且不能整除100 或者能整除400 )
int func_year(int year); //聲明函數(shù)
int main(void)
{
int year; //c89標(biāo)準(zhǔn)
int err=0;
printf("輸入一個(gè)年份:");
scanf("%d",&year);
err=func_year(year);//調(diào)用函數(shù)
if(err==1)
{
printf("閏年! ");
}
else if(err==0)
{
printf("平年! ");
}
else
{
printf("輸入的年份錯(cuò)誤! ");
}
return 0;
}
(2)該函數(shù)由主函數(shù)調(diào)用,判斷平年和閏年。
/*
函數(shù)功能: 判斷平年和閏年
返回值 : 0表示平年,1表示閏年,負(fù)數(shù)表示錯(cuò)誤
*/
int func_year(int year)
{
if(year<1900)return -1; //加一個(gè)限制條件
if((year%4==0&&year%100!=0)||year%400==0)
{
return 1;
}
return 0;
}
(3)輸入一個(gè)華氏溫度,輸出攝氏溫度,計(jì)算公式為(華氏度-32)×5÷9 要求結(jié)果保留兩位小數(shù)。
float func_temp(float temp); //聲明函數(shù)
int main(void)
{
float temp;
printf("輸入一個(gè)溫度值:");
scanf("%f",&temp);
printf("temp=%.2f ",func_temp(temp));
return 0;
}
/*
函數(shù)功能: 計(jì)算溫度
返回值 : 攝氏度
*/
float func_temp(float temp)
{
//(華氏度-32)×5÷9
return (temp-32)*5/9.0;
}
(4)封裝函數(shù),打印以下圖案:回文三角形,形參可以決定行數(shù)。
1
121
12321
1234321
(5)計(jì)算百分比與數(shù)據(jù)自動(dòng)轉(zhuǎn)換
int main(void)
{
float data;
data=(10/60.0)*100; //運(yùn)算時(shí),需要一個(gè)數(shù)據(jù)是浮點(diǎn)數(shù),運(yùn)算中才可以使用浮點(diǎn)方式存儲(chǔ)
printf("data=%.0f%% ",data);
return 0;
}
(6)函數(shù)返回值例子: 限定范圍
int func(int a);
int main(void)
{
printf("%d ",func(200));
return 0;
}
int func(int a)
{
return (a==100); //限定范圍值為0和1
}
三、 變量的作用域
3.1 全局變量和局部變量
const int c; //定義只讀變量
static int b; //定義靜態(tài)變量
說(shuō)明: 變量定義作用域分為全局變量和局部變量。
1.局部變量和全局變量名稱可以相同。
2.如果局部變量名稱與全局變量名稱相同,優(yōu)先使用局部變量。
void func(int);
int data=123; //全局變量(公用變量)
int main(void)
{
int data=456; //局部變量
printf("data1=%d ",data);
func(666);
return 0;
}
void func(int data)
{
printf("data2=%d ",data);
}
3.2 只讀變量
void func(int);
const int data=888; //只讀變量
int main(void)
{
//data=666; 錯(cuò)誤的
printf("%d ",data);
return 0;
}
void func(int data)
{
printf("data2=%d ",data);
}
3.3 靜態(tài)變量
?靜態(tài)變量測(cè)試
int func(void);
int main(void)
{
int i,data;
for(i=0;i<5;i++)
{
data=func();
}
printf("data=%d ",data);
return 0;
}
int func(void)
{
//int data=0; //局部變量,生命周期隨著函數(shù)調(diào)用結(jié)束而終止。
static int data=0; //靜態(tài)變量,生命周期與main函數(shù)一樣。
//static int data=0 只有第一次執(zhí)行有效
data++; //data=data+1 ,1
return data;
}
3.4 靜態(tài)全局變量
//int data; 全局變量,可以在其他.c文件引用
static int data=0; //靜態(tài)全局變量-----局部變量
//靜態(tài)全局變量: 表示該data變量不能被其他文件所引用。
//防止全局變量,重命名。
int main(void)
{
return 0;
}
3.5 靜態(tài)函數(shù)
static int func(void);
int main(void)
{
func();
return 0;
}
//定義靜態(tài)函數(shù),表示該函數(shù)只能在本文件使用。
static int func(void)
{
printf("123 ");
}
3.6 變量的初始化值
static int data1;
int data2;
int main(void)
{
int data3; //局部變量
static int data4;
printf("data1=%d ",data1); //0
printf("data2=%d ",data2); //0
printf("data3=%d ",data3); //未知值
printf("data4=%d ",data4); //0
int cnt;
//cnt++;
/*
for(i=0;i<5;i++)
{
if(xxxx)data3|=0x1;
data3<<=1;
}*/
return 0;
}
-----------------------------------
著作權(quán)歸作者所有:來(lái)自51CTO博客作者DS小龍哥,原文鏈接:https://blog.51cto.com/u_11822586/5256783
寫(xiě)在最后:另外,對(duì)于準(zhǔn)備學(xué)習(xí)C/C++編程的小伙伴,如果你想更好的提升你的編程核心能力(內(nèi)功)不妨從現(xiàn)在開(kāi)始!
整理分享(多年學(xué)習(xí)的源碼、項(xiàng)目實(shí)戰(zhàn)視頻、項(xiàng)目筆記,基礎(chǔ)入門(mén)教程)
歡迎轉(zhuǎn)行和學(xué)習(xí)編程的伙伴,利用更多的資料學(xué)習(xí)成長(zhǎng)比自己琢磨更快哦!
原文標(biāo)題:C語(yǔ)言干貨:函數(shù)知識(shí)詳解(變量的作用域,全局變量,靜態(tài)變量)
文章出處:【微信公眾號(hào):C語(yǔ)言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
-
C語(yǔ)言
+關(guān)注
關(guān)注
180文章
7604瀏覽量
136680 -
函數(shù)
+關(guān)注
關(guān)注
3文章
4327瀏覽量
62569 -
作用域
+關(guān)注
關(guān)注
0文章
6瀏覽量
6115
原文標(biāo)題:C語(yǔ)言干貨:函數(shù)知識(shí)詳解(變量的作用域,全局變量,靜態(tài)變量)
文章出處:【微信號(hào):cyuyanxuexi,微信公眾號(hào):C語(yǔ)言編程學(xué)習(xí)基地】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論