只要是括號就需要配對出現(xiàn)的,大括號起的作用主要就是劃分區(qū)域用的。比如:if(ab) println("ab");與if(ab) { println("ab"); }其實效果是一樣的但有的時候是必須用到大括號的。比如當(dāng)if語句后有多條語句的話就需要大括號與別的語句繼續(xù)區(qū)分。比如:if(ab){ max=a; println("max=%d",c);}還有種情況是if語句中還有if語句,這種時候往往都是要加大括號的比如:if(ab){ if(ca) { println("max=%d",c); }}其實,你可以這樣理解,一個大括號里的內(nèi)容就是一條語句,普通的語句是以分號結(jié)尾的,只不過這條語句長了點,需要用括號括起來而已。
創(chuàng)新互聯(lián)公司是一家專業(yè)提供港北企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站建設(shè)、做網(wǎng)站、成都h5網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為港北眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)站設(shè)計公司優(yōu)惠進(jìn)行中。
大括號, 從內(nèi)向外,一對為一組。
一對大括號間的東西為一個范圍。
外層大括號包含內(nèi)層大括號的域,相對說外層大括號括起的叫全局,內(nèi)層大括號括起的叫局部。
#include stdio.h
#include stdlib.h
void main()
{
int a[]={1,2,3,4};
int b=99;
int i;
printf("A: a=");
for (i=0;i4;i++) printf("%d ",a[i]);
printf("\n");
printf("A: b= %d\n",b);
{
int a[]={5,6,7,8,9};
printf("B: a=");
for (i=0;i4;i++) printf("%d ",a[i]);
printf("\n");
printf("B: b= %d\n",b);
};
printf("C: a=");
for (i=0;i4;i++) printf("%d ",a[i]);
printf("\n");
printf("C: b= %d\n",b);
};
上面程序說明B 區(qū)是局部,B 區(qū) 重新 定義了a, a值變了,b 值不變,退出 B 區(qū),a 值恢復(fù)。
打出:
A: a=1 2 3 4
A: b= 99
B: a=5 6 7 8
B: b= 99
C: a=1 2 3 4
C: b= 99
假設(shè)主函數(shù)main()。其他函數(shù)void fun(int a,int *b)。
關(guān)于函數(shù)定義和聲明:
在代碼中fun函數(shù),有完整函數(shù)體的代碼就是函數(shù)定義部分,比如void fun(int a,int *b){。。。};。
如果沒有具體實現(xiàn)的函數(shù)體代碼(也就是大括號內(nèi)容),那么就是函數(shù)聲明。比如void fun(int ,int *);
關(guān)于函數(shù)聲明和調(diào)用:
如果fun函數(shù)定義在main代碼上面。比如:
void fun(int a,int *b){。。。};
int main(){
int a=0,int b=0;
......
fun(a,b);//這里fun定義代碼在main上面,所以可以不需要聲明。反之需要先寫聲明語句
return 0;
}
關(guān)于函數(shù)局部變量及全局變量:
簡單區(qū)分:
定義在函數(shù)之外的就是全局變量,這個變量所有函數(shù)都可以直接使用,并且共用同一個地址。任意函數(shù)修改了變量值,其他函數(shù)調(diào)用也會變。
定義在函數(shù)之內(nèi)的就是局部變量,局部變量只屬于該函數(shù),其他函數(shù)即使定義了同樣名字的變量,這兩個變量也不同地址,互不相干。
比如:
int a;//這就是全局變量,作用域下所有函數(shù)共用
int main()
{
int b;//這就是局部變量,只在本函數(shù)有效,如果想在調(diào)用fun函數(shù)時讓fun也使用該變量,需要把這個變量的地址作為參數(shù)傳遞過去。
printf("%d",b);
return 0;
}
注意:c語言中允許局部變量和全局變量同名,但是同名的局部變量會屏蔽全局變量,實際代碼避免同名。
關(guān)于函數(shù)傳值和傳址:
如函數(shù)void fun(int a,int *b){..........};這里形參a 和*b,分別表示一個值和一個地址
所以在調(diào)用該函數(shù)時,比如:
int main()
{
int c,d;
fun(c,d);//這里調(diào)用就對應(yīng)上面形參類型,第一個參數(shù)傳遞了c的值(傳值),第二個參數(shù)傳遞了d的地址(傳址),這里c和d,叫做實參。當(dāng)fun函數(shù)運(yùn)行時改變了a和b指向地址的值,對應(yīng)main函數(shù)中c的值不變,d的值改變。
return 0;
}
順帶一說:局部變量,在函數(shù)運(yùn)行結(jié)束后會自動釋放,所以想把局部變量地址作為返回值,需要用malloc函數(shù)申請。(這里看不懂可以暫時忽視)
大括號{ }用于定義函數(shù)體,構(gòu)成復(fù)合語句(語句塊)、聲明聯(lián)合(union)及結(jié)構(gòu)體變量。也用于初始化數(shù)組、結(jié)構(gòu)體等類型的變量。
中括號[]用于指明數(shù)組下標(biāo);在聲明數(shù)組時,用于確定數(shù)組長度。
小括號用于聲明函數(shù)參數(shù)列表,改變表達(dá)式運(yùn)算的方向,向函數(shù)傳遞參數(shù)。除了上述這些作用外,小括號也具有在代數(shù)運(yùn)算中相同的作用,另外,在C語言中,代數(shù)運(yùn)算時的中、大括號都用小括號代替。
當(dāng)然不能共用,這個是再語法角度說的,如果是代碼上,你仔細(xì)觀察有可能是這種情況,
void
main()
{
"{";
}
看到?jīng)],這個是合法的,用了三個括號。但是中間那個是帶引號的,是字符串,并不是真的語法上的括號
#includestdio.h
//函數(shù)聲明和定義
void function()
{
printf("hello world!");
}
int main()
{
function(); ?//函數(shù)調(diào)用
return 0;
}
1.C語言不允許函數(shù)嵌套聲明、定義(即不能再函數(shù)里面再定義一個函數(shù))
2.C語言允許函數(shù)嵌套調(diào)用
希望對你有幫助!