C語(yǔ)言中,函數(shù)調(diào)用的一般形式為:
灌云網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,灌云網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為灌云上千余家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營(yíng)銷(xiāo)網(wǎng)站建設(shè)要多少錢(qián),請(qǐng)找那個(gè)售后服務(wù)好的灌云做網(wǎng)站的公司定做!
函數(shù)名(實(shí)際參數(shù)表)
對(duì)無(wú)參函數(shù)調(diào)用時(shí)則無(wú)實(shí)際參數(shù)表。實(shí)際參數(shù)表中的參數(shù)可以是常數(shù),變量或其它構(gòu)造類(lèi)型數(shù)據(jù)及表達(dá)式。各實(shí)參之間用逗號(hào)分隔。
8.4.2
函數(shù)調(diào)用的方式
在C語(yǔ)言中,可以用以下幾種方式調(diào)用函數(shù):
1.
函數(shù)表達(dá)式:函數(shù)作為表達(dá)式中的一項(xiàng)出現(xiàn)在表達(dá)式中,以函數(shù)返回值參與表達(dá)式的運(yùn)算。這種方式要求函數(shù)是有返回值的。例如:z=max(x,y)是一個(gè)賦值表達(dá)式,把max的返回值賦予變量z。
2.
函數(shù)語(yǔ)句:函數(shù)調(diào)用的一般形式加上分號(hào)即構(gòu)成函數(shù)語(yǔ)句。例如:
printf
("%d",a);scanf
("%d",b);都是以函數(shù)語(yǔ)句的方式調(diào)用函數(shù)。
3.
函數(shù)實(shí)參:函數(shù)作為另一個(gè)函數(shù)調(diào)用的實(shí)際參數(shù)出現(xiàn)。這種情況是把該函數(shù)的返回值作為實(shí)參進(jìn)行傳送,因此要求該函數(shù)必須是有返回值的。例如:
printf("%d",max(x,y));
即是把max調(diào)用的返回值又作為printf函數(shù)的實(shí)參來(lái)使用的。在函數(shù)調(diào)用中還應(yīng)該注意的一個(gè)問(wèn)題是求值順序的問(wèn)題。所謂求值順序是指對(duì)實(shí)參表中各量是自左至右使用呢,還是自右至左使用。對(duì)此,各系統(tǒng)的規(guī)定不一定相同。介紹printf
函數(shù)時(shí)已提到過(guò),這里從函數(shù)調(diào)用的角度再?gòu)?qiáng)調(diào)一下。
我會(huì)說(shuō)我復(fù)制的?
這么清楚了應(yīng)該看的懂吧?
看不懂再問(wèn)我
#includestdlib.h
typedef?struct?node/*二叉鏈表結(jié)構(gòu)聲明*/
{
struct?node?*lchild;
char?data;
struct?node?*rchild;
}bitnode,*bitree;/*bitnode、bitree為該結(jié)構(gòu)體類(lèi)型*/
bitree?CreatTree()/*創(chuàng)建二叉鏈表*/
{
char?a;
bitree?new;
scanf("%c",a);
if(a=='#')
return?NULL;
else
{
new=(bitree)malloc(sizeof(bitnode));
new-data=a;
new-lchild=CreatTree();/*遞歸創(chuàng)建左子樹(shù)*/
new-rchild=CreatTree();/*遞歸創(chuàng)建右子樹(shù)*/
}
return?new;
}
int?btreedepth(bitree?bt)/*自定義函數(shù)btreedepth()求二叉樹(shù)的深度*/
{
int?ldepth,rdepth;
if(bt==NULL)
return?0;
else
{
ldepth=btreedepth(bt-lchild);
rdepth=btreedepth(bt-rchild);
return?(ldepthrdepth?ldepth+1:rdepth+1);
}
}
int?ncount(bitree?bt)/*自定義函數(shù)ncount求結(jié)點(diǎn)的個(gè)數(shù)*/
{
if(bt==NULL)
return?0;
else?return(ncount(bt-lchild)+ncount(bt-rchild)+1);
}
int?lcount(bitree?bt)/*自定義函數(shù)lcount求葉子結(jié)點(diǎn)的個(gè)數(shù)*/
{
if(bt==NULL)
return?0;
else?if(bt-lchild==NULLbt-rchild==NULL)
return?1;
else?return(lcount(bt-lchild)+lcount(bt-rchild));
}
void?print(bitree?bt)/*自定義函數(shù)print用中序遍歷的方式輸出二叉樹(shù)結(jié)點(diǎn)內(nèi)容*/
{
if(bt!=NULL)
{
print(bt-lchild);
printf("%c",bt-data);
print(bt-rchild);
}
}
void?main()
{
bitree?root;
root=CreatTree();/*調(diào)用函數(shù)創(chuàng)建二叉鏈表*/
printf("contents?of?binary?tree:\n");
print(root);/*調(diào)用函數(shù)輸出結(jié)點(diǎn)內(nèi)容*/
printf("\ndepth?of?binary?tree:%d\n",btreedepth(root));/*調(diào)用函數(shù)輸出樹(shù)的深度*/
printf("the?number?of?the?nodes:%d\n",ncount(root));/*調(diào)用函數(shù)輸出樹(shù)中結(jié)點(diǎn)個(gè)數(shù)*/
printf("the?number?of?the?leaf?nodes:%d\n",lcount(root));/*調(diào)用函數(shù)輸出樹(shù)中葉子結(jié)點(diǎn)個(gè)數(shù)*/
}
你的說(shuō)法是有問(wèn)題的。
通常說(shuō),通過(guò)指針作為函數(shù)的參數(shù),可以再被調(diào)函數(shù)中,修改實(shí)際參數(shù)所指向的變量的值,也就是把改變傳遞給主調(diào)函數(shù)。
但是,請(qǐng)看清楚上面的說(shuō)法,“通過(guò)指針作為函數(shù)的參數(shù),可以再被調(diào)函數(shù)中,修改實(shí)際參數(shù)所指向的變量的值”。是修改實(shí)際參數(shù)所指向的變量的值,而不是修改實(shí)際參數(shù)本身。
你的代碼里面是要修改實(shí)際參數(shù)本身,而不是修改實(shí)際參數(shù)所指向變量。
要完成這個(gè)功能,你就需要指向指針的指針了