靜態(tài)變量,特點(diǎn)就是只初始化一次。所以在這里b是只定義一次的。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計(jì)、網(wǎng)站建設(shè)、微信開發(fā)、微信小程序、集團(tuán)企業(yè)網(wǎng)站建設(shè)等服務(wù)項(xiàng)目。為回饋新老客戶創(chuàng)新互聯(lián)還提供了富拉爾基免費(fèi)建站歡迎大家使用!
于是
1 會占用,但是很少。 和全局變量定義差不多
2 沒有,因?yàn)椴淮嬖诙啻味x,只定義了一次。
3 除了生命周期,最大的差別就是作用域了。
局部變量,只能在函數(shù)內(nèi)訪問,而全局變量就是誰都能訪問,這樣很容易出現(xiàn)混亂,尤其是多線程的情況下。
除此外,非靜態(tài)的局部變量,在函數(shù)退出后內(nèi)存就釋放了,如果所有變量都定義成全局的,那明顯是對內(nèi)存的一種浪費(fèi)。
標(biāo)準(zhǔn)C是不可以,但C++是可以的。
標(biāo)準(zhǔn)C必須在函數(shù)開頭定義變量!
比如
main()
{
int a;
a=2;
{
int b;//這里可以定義b,因?yàn)樗诖罄ㄌ杻?nèi),相當(dāng)于在一個函數(shù)內(nèi)
b=3;
}
}
C語言中主函數(shù)中定義的變量只能在主函數(shù)中使用,所以你還得再定義一個變量。
當(dāng)然,捏可以把主函數(shù)中定義的這個變量傳遞給被調(diào)用的函數(shù)作為參數(shù)。
例如
void fun(int x)
{
}
main()
{
int num=9;
fun(9);
}
但是如果你要在被調(diào)用函數(shù)中使用這個變量例如
fun()
{
num++;
}
像這樣,就是錯的,編譯器會報(bào)錯,main中定義的變量是局部變量,只能在main中使用。
你可以在main外部定義一個變量,這樣在被調(diào)用函數(shù)中也就可以使用了。
是的。
在函數(shù)內(nèi)部定義的變量,稱之為局部變量。
局部變量的作用域,也就是有用的范圍,是從定義位置開始,到所在大括號結(jié)束。
如
int?func()
{
int?i?=?10;?//i的定義位置。
if(i?==?1)
{
int?j?=?100;?//?j?的定義位置。
//some?codes
}//j所在大括號結(jié)束,j的作用域結(jié)束。
//some?codes
}//函數(shù)結(jié)束,i的作用域結(jié)束。
把變量定義在主函數(shù)之外,即把變量設(shè)置為全局的。
一般我們都把變量的定義放在函數(shù)中,因此變量的范圍就是在本函數(shù)中??墒侨绻x在所有函數(shù)的外面,這樣所有的函數(shù)中,都可以使用本變量。
你可以試一下這個程序。定義一個全局變量a,在主函數(shù)中進(jìn)行賦值,然后在子函數(shù)中進(jìn)行輸出,結(jié)果是5.
#includestdio.h
int a;
void func();//函數(shù)聲明
int main()
{
a=5;
func();
}
void func()
{
printf("%d\n", a);
}
+++++++++++++++++++++++++++++++++++++++++++++++++++
當(dāng)然,除了定義全局變量這個方法,還有其他的方法,那就是指針。在子函數(shù)的參數(shù)中傳遞變量的地址,依然可以使用該變量,依然能夠改變該變量的值。因?yàn)橹骱瘮?shù)和子函數(shù)的變量共用的是同一個地址的變量,因此,不管在哪個函數(shù)中對變量進(jìn)行操作,都會影響變量。
比如下面這個程序,在主函數(shù)中a的值為5,將變量a的地址傳遞過去,子函數(shù)將該地址中的變量的值設(shè)置為3,然后主函數(shù)輸出,結(jié)果卻是3.
#includestdio.h
void func(int *b);//函數(shù)聲明
int main()
{
int a=5;
func(a);//把變量a的地址傳遞過去
printf("%d\n", a);
}
void func(int *b)
{
*b=3; //將地址b中變量的值設(shè)置為3
}
顯然提問者沒有搞清楚 函數(shù) 聲明和定義 這兩個概念
第一行void abc(void); 是聲明,不是定義,因?yàn)闆]有函數(shù)體,只是告訴Main函數(shù),你要調(diào)用的abc函數(shù)是有的,定義在后面
Main函數(shù)中的abc函數(shù)是調(diào)用,調(diào)用當(dāng)然可以多次使用,函數(shù)的作用也在于此,一次定義,多次調(diào)用,體現(xiàn)代碼復(fù)用的好處
最后void abc(void){ …… } 到結(jié)束,是定義了,說明函數(shù)干什么的
ky 寫 abc函數(shù)里 是推薦的方式,成為局部變量,函數(shù)調(diào)用完后,ky可被系統(tǒng)釋放內(nèi)存
ky不能寫在Main函數(shù)里,abc將無法訪問其他代碼塊(花括號內(nèi))的局部變量
ky可以寫在最外面,即不在任何代碼塊內(nèi),且要寫最頂行(建議),這樣后續(xù)的函數(shù)都可以訪問該(全局)變量,但一般建議不要過多使用全局變量
當(dāng)前文章:c語言在函數(shù)中間定義變量 C語言中間變量
URL網(wǎng)址:http://chinadenli.net/article10/hjjsgo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供軟件開發(fā)、網(wǎng)站營銷、標(biāo)簽優(yōu)化、網(wǎng)站維護(hù)、營銷型網(wǎng)站建設(shè)、App設(shè)計(jì)
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)