新聞中心
C語言函數(shù)中定義變量的問題
靜態(tài)變量,特點(diǎn)就是只初始化一次。所以在這里b是只定義一次的。
網(wǎng)站建設(shè)哪家好,找創(chuàng)新互聯(lián)!專注于網(wǎng)頁設(shè)計、網(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)。
c語言可以在程序中間定義新變量嗎???
標(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ù)中定義的變量,調(diào)用函數(shù)里還需要再定義嗎?
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++;
}
像這樣,就是錯的,編譯器會報錯,main中定義的變量是局部變量,只能在main中使用。
你可以在main外部定義一個變量,這樣在被調(diào)用函數(shù)中也就可以使用了。
c語言函數(shù)中定義的變量是否只在該函數(shù)內(nèi)有用
是的。
在函數(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é)束。
C語言中,如何定義一個變量,使其既可以在主函數(shù)中使用,也可以在子函數(shù)中使用
把變量定義在主函數(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
}
C語言自定義函數(shù)中定義常量、變量的問題
顯然提問者沒有搞清楚 函數(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ù)都可以訪問該(全局)變量,但一般建議不要過多使用全局變量
本文題目:c語言在函數(shù)中間定義變量 C語言中間變量
標(biāo)題網(wǎng)址:http://fisionsoft.com.cn/article/hjjsgo.html