函數(shù)的調(diào)用是借助”?!皝韺?shí)現(xiàn),
讓客戶滿意是我們工作的目標(biāo),不斷超越客戶的期望值來自于我們對這個(gè)行業(yè)的熱愛。我們立志把好的技術(shù)通過有效、簡單的方式提供給客戶,將通過不懈努力成為客戶在信息化領(lǐng)域值得信任、有價(jià)值的長期合作伙伴,公司提供的服務(wù)項(xiàng)目有:域名申請、雅安服務(wù)器托管、營銷軟件、網(wǎng)站建設(shè)、潁州網(wǎng)站維護(hù)、網(wǎng)站推廣。
系統(tǒng)將整個(gè)程序運(yùn)行時(shí)所需的數(shù)據(jù)空間安排在一個(gè)棧中,
每當(dāng)調(diào)用一個(gè)函數(shù)時(shí),就在棧頂分配一個(gè)存儲區(qū),進(jìn)行壓棧操作,
每當(dāng)一個(gè)函數(shù)退出時(shí),就釋放它的存儲區(qū),進(jìn)行出棧操作,
當(dāng)前時(shí)刻正在運(yùn)行的函數(shù)永遠(yuǎn)都在棧頂位置
至于會(huì)不會(huì)變成死循環(huán),這要看函數(shù)內(nèi)部的具體實(shí)現(xiàn)
比如
# include stdio.h
f();
g();
int main(void)
{
f();
return 0;
}
f()
{
printf("AAAAAA\n");
g();
}
g()
{
printf("BBBBB\n");
f();
}
f()調(diào)用g() 壓棧
g()又調(diào)用f() 還是壓棧
這種情況就類似于死循環(huán),但是運(yùn)行時(shí)不會(huì)永遠(yuǎn)輸出
原因就是函數(shù)的調(diào)用在棧中執(zhí)行
棧是有一定的空間
當(dāng)??臻g用完即發(fā)生棧溢出時(shí)輸出就會(huì)終止
僅供參考!
互相反復(fù)調(diào)用,一方面是死循環(huán),另一方面,系統(tǒng)資源堆棧會(huì)耗盡。
我們可以加一個(gè)循環(huán)控制條件,讓它只循環(huán)有限次結(jié)束。
#include stdio.h
int a=1,b=9;
int k=0,k_m=10; // 用k 記錄次數(shù),設(shè)最多次數(shù)為 k_m
int change();
int change1();
int main(){
change();
return 0;
}
int change(){
int i;
k++; if (k k_m) return 1; // 次數(shù)滿了,結(jié)束程序
for(i=0;i2;i++) {
printf("a=%d\n",a);
change1();
}
return 0; // 正常返回0
}
int change1(){
int i1;
k++; if (k k_m) return 2; // 次數(shù)滿了,結(jié)束程序
for(i1=0;i12;i1++) {
printf("b=%d\n",b);
change();
}
return 0; // 正常返回0
}
這就沒問題了。
定義和聲明可以分開的。先聲明兩個(gè)函數(shù),然后再后面再寫函數(shù)體就可以了。比如
void?A();
void?B();
void?A()
{
B();
return;
}
void?B()
{
A();
return;
}
在最上面聲明每個(gè)函數(shù)。
這樣任何一個(gè)函數(shù),都可以調(diào)用其它函數(shù)。
不過 互相調(diào)用要注意,不要出現(xiàn)死循環(huán)
即a調(diào)用b, b再調(diào)用a。。。 無限下去,會(huì)出現(xiàn)棧溢出,程序崩潰的。