3 回答

TA貢獻(xiàn)1848條經(jīng)驗(yàn) 獲得超2個(gè)贊
a和b的作用域僅限于內(nèi)層大括號(hào),出了大括號(hào)則不可訪問(wèn)或者表示外部的同名變量。在內(nèi)層大括號(hào)內(nèi)a表示內(nèi)層中定義的a,它覆蓋了外層中定義的a的作用域。

TA貢獻(xiàn)1875條經(jīng)驗(yàn) 獲得超3個(gè)贊
用花括號(hào)就可以定義程序塊了。
指向到那個(gè)花括號(hào)里面時(shí)就是里面的a屏蔽外面的a了,出了花括號(hào),就是外面的a

TA貢獻(xiàn)1798條經(jīng)驗(yàn) 獲得超3個(gè)贊
總的分為局部變量和全局變量:局部變量又可分為動(dòng)態(tài)局部變量(沒(méi)特殊聲明的變量一般都為動(dòng)態(tài)局部變量)和靜態(tài)局部變量(用static關(guān)鍵字聲明的變量如:static int a;);兩者的區(qū)別在于:靜態(tài)的局部變量生存期比動(dòng)態(tài)的局部變量來(lái)的長(zhǎng),動(dòng)態(tài)的局部變量的生存期為所定義的范圍內(nèi),如在函數(shù)內(nèi)定義的,函數(shù)結(jié)束,變量也跟著結(jié)束,變量的值不會(huì)保存下來(lái)。而靜態(tài)變量的生存期為整個(gè)源程序(也可說(shuō)是一個(gè)文件,不同環(huán)境不同稱(chēng)呼)。而兩者的作用域是一樣。只能在定義他的函數(shù)內(nèi)起作用,離開(kāi)了這個(gè)函數(shù)就不起作用了。
全局變量:在函數(shù)之外定義的變量稱(chēng)為全局變量。全局變量可以為本文件中其他函所共用(作用域),它的有效范圍(生存期)從定義變量開(kāi)始到文件結(jié)束。
如果在同一個(gè)源文件中,外部變量與局部變量同名,則在局部變量的作用范圍內(nèi),外部變量被“屏蔽”,即全局變量不起作用。
下面來(lái)看一個(gè)例子:
#include"stdio.h"
int d=1; //聲明一個(gè)全局變量
int fun(int p)
{
static int d=5; //定義一個(gè)靜態(tài)局部變量 d初值為5 //第二次調(diào)用時(shí)沒(méi)有執(zhí)行此行
d=d+p; //此時(shí)局部變量d的值為9,(第一次調(diào)用) //第二次調(diào)用是局部變量d 的值為13,因?yàn)樯弦淮螆?zhí)行完后d的值為9,
printf("%d",d); //第一次輸出為9,//第二次輸出13
}
void main()
{
int a=3;
d=d+a; //此時(shí)d的值為4;a變量的值為3,全局變量d的值為1。
for(i=0;i<2;i++)
fun(d); //此處的d值為4,傳送給形參p,再一次調(diào)用時(shí)還是將4傳給開(kāi)參p
printf("d=%d",d); //輸出d的值為4.此處的d為全局變量。
}
看以上內(nèi)容時(shí),你先把程序看一篇,然后把會(huì)值代進(jìn)去遠(yuǎn)算,每一次看注釋時(shí)在同一行中只要看到第二個(gè)”//“時(shí)結(jié)束.第2個(gè)“//”為第二次調(diào)用時(shí)看的。
- 3 回答
- 0 關(guān)注
- 475 瀏覽
添加回答
舉報(bào)