C語言的函數(shù)定義是互相平行的,獨(dú)立的,也就是說,在定義函數(shù)時(shí),一個(gè)函數(shù)內(nèi)不能包含另一個(gè)函數(shù),不能嵌套定義函數(shù)(但Pascal語言是可以嵌套定義的)。但能嵌套調(diào)用。
網(wǎng)站建設(shè)公司,為您提供網(wǎng)站建設(shè),網(wǎng)站制作,網(wǎng)頁設(shè)計(jì)及定制網(wǎng)站建設(shè)服務(wù),專注于成都定制網(wǎng)頁設(shè)計(jì),高端網(wǎng)頁制作,對成都除甲醛等多個(gè)行業(yè)擁有豐富的網(wǎng)站建設(shè)經(jīng)驗(yàn)的網(wǎng)站建設(shè)公司。專業(yè)網(wǎng)站設(shè)計(jì),網(wǎng)站優(yōu)化推廣哪家好,專業(yè)seo優(yōu)化排名優(yōu)化,H5建站,響應(yīng)式網(wǎng)站。
//?z=func(func(x++,y++),func(--x,--y));可以分三步完成
//?第(1)步,func(x++,y++)傳入的實(shí)參是6?和7,函數(shù)返回?13,同時(shí)x和y再分別自增1,因此?x=7,?y?=?8
//?第(2)步,在調(diào)用函數(shù)前,x和y分別自減1,因此func(--x,--y)傳入的實(shí)參依舊為6和7,函數(shù)返回?13,此時(shí)?x=?6,?y?=?7
//?第(3)步,根據(jù)第(1)步和第(2)步的函數(shù)調(diào)用后,z?=?func(func(x++,y++),func(--x,--y));分別把函數(shù)的返回值作為第(3)次函數(shù)調(diào)用的參數(shù)調(diào)用,因此,
z?=?func(13,13)?=?26;
//所以輸出為26
在C語言中,所有的函數(shù)定義,包括主函數(shù)main在內(nèi),都是平行的。也就是說,在一個(gè)函數(shù)的函數(shù)體內(nèi), 不能再定義另一個(gè)函數(shù), 即不能嵌套定義.
在例子中,沒有嵌套定義的.
int max(int a,int b)
{
if(ab)return a;
else return b;
}//這是在定義max
而main()函數(shù)中,
void main()
{
int max(int a,int b);//這是聲明,被調(diào)用函數(shù),定義在main函數(shù)前,可以省略.
int x,y,z;
printf("input two numbers:\n");
scanf("%d%d",x,y);
z=max(x,y);//這是調(diào)用.
printf("maxmum=%d",z);
}
所以不矛盾..
主函數(shù)中調(diào)用了兩次f1函數(shù) 雖然for循環(huán)后沒寫{} 但是for if等 在沒有寫{}時(shí)默認(rèn)執(zhí)行之后的第一個(gè)語句 另外 你追問的int f2(int r); 這里你()中填寫的是int r 代表著 你是在這里剛聲明的 聲明int類型但是沒賦值時(shí)默認(rèn)值為0 所以你不管把這里的變量改成什么 結(jié)果傳遞給f2的值都會(huì)是0
#define K 4 定義K為常量4
#define N 5 定義N為常量4(注意K、N均為大寫,不同于下面的小寫k、n)
long f1(int n,int k) 定義函數(shù)f1,形參為n,k
{ long power=n; 初始化變量power賦值為n
int i; 定義變量i
for(i=1;ik;i++) power *= n; 此用了一個(gè)for循環(huán),i的值從1到k-1(因?yàn)閕k,不是i=k),power*=n就是power=power*n的意思,于是每循環(huán)一次,power就乘一次n,于是f1函數(shù)指的是n的k次方。(因?yàn)閜ower本身為n,然后又循環(huán)k-1次)
return power; 返回power值,就是n的k次方。
}
long f2(int n,int k) 定義函數(shù)f1,形參為n,k
{ long sum=0; 初始化變量sum賦值為0
int i; 定義變量i
for(i=1;i=n;i++) sum += f1(i, k); 此用了一個(gè)for循環(huán),i的值從1到n,然后用調(diào)用了f1函數(shù),這樣意思為sum=0+f1(1,k)+f1(2,k)+f1(3,k)+……f1(n,k)
return sum; 返回sum值f1(1,k)+f1(2,k)+f1(3,k)+……f1(n,k)
}
main函數(shù),我就不解釋了哈!
有什么不懂,發(fā)百度消息給我,再探討,呵呵!共同學(xué)習(xí)
比如,你有一個(gè)函數(shù)
void example()
{
......
}
還有一個(gè)函數(shù)
void forexample()
{
.....
void example();
example();
}
就如你看到的,void forexample()函數(shù)里面,有用到example()函數(shù)。這就是你想知道的函數(shù)嵌套。
滿意請采納,如果還有問題,可以加我百度HI