選D
懷柔網(wǎng)站建設(shè)公司成都創(chuàng)新互聯(lián)公司,懷柔網(wǎng)站設(shè)計(jì)制作,有大型網(wǎng)站制作公司豐富經(jīng)驗(yàn)。已為懷柔上1000家提供企業(yè)網(wǎng)站建設(shè)服務(wù)。企業(yè)網(wǎng)站搭建\外貿(mào)營銷網(wǎng)站建設(shè)要多少錢,請找那個(gè)售后服務(wù)好的懷柔做網(wǎng)站的公司定做!
因?yàn)榈谝粋€(gè)參數(shù)是地址傳遞,fun(b,a);中傳入a字符。*c=*c+1將c的值變?yōu)閎字符。主函數(shù)的值改變。
第二個(gè)參數(shù)是值傳遞,所以在函數(shù)中d的值為B字符。但是并不影響主函數(shù)的值,所以主函數(shù)輸出a的值是A。b的值是b。
函數(shù)定義和函數(shù)調(diào)用是兩個(gè)概念,函數(shù)定義 為f(int *arr),表示參數(shù)是一個(gè)整型指針,因此使用該函數(shù)時(shí)要傳遞一個(gè)地址,如變量int a=0; 調(diào)用函數(shù)f傳遞a的地址時(shí)需要寫為f(a);而對于數(shù)組來說,如int b[]=[1,2,3], b本身就是數(shù)組首元素的地址,因此調(diào)用函數(shù)f傳遞數(shù)組首地址需要寫為f(b)。
看你的需要了,有時(shí)不用指針作為參數(shù)達(dá)不到你要的效果,比如一個(gè)swap()函數(shù)。
int
swap(int
a,int
b)
{
int
tmp;
tmp=a;
a=b;
b=tmp;
}
如果你想調(diào)用該函數(shù)交換兩個(gè)變量的值,在主函數(shù)中輸出,那是不可能的。比如這樣調(diào)用:
int
x=1,y=2;
swap(x,y);
printf("%d
%d",x,y);
你認(rèn)為會(huì)輸出2
1嗎?錯(cuò)!還是會(huì)輸出1
2的。因?yàn)閭魅雜wap()函數(shù)的只是x,y的拷貝,而不是它們自身。
如果要真正達(dá)到交換的目的,就要用指針傳值。這樣定義函數(shù):
void
swap(int
*a,int
*b)
{
int
tmp;
tmp=*a;
*a=*b;
*b=tmp;
}
但是給函數(shù)傳值時(shí)要注意,指針是指向地址的,所以參數(shù)要是地址,即需要給變量取地址。
int
x=1,y=2;
swap(x,y);
printf("%d
%d",x,y);
這樣就是輸出2
1了!
首先需要聲明函數(shù)指針的類型(下例子中的typedef int (*fpFunt)(int a,int b),再定義某個(gè)函數(shù)(下例中的Add),在其參數(shù)列表中使用該函數(shù)指針類型,同時(shí)需要定義另一函數(shù)(下例中的fpAdd,注意該函數(shù)形式要和fpFunt一致,本例子中是返回一個(gè)整數(shù),兩個(gè)整型參數(shù))作為實(shí)參用。這里在手機(jī)上使用易歷知食軟件內(nèi)的微C程序設(shè)計(jì)來編程,舉個(gè)兩個(gè)數(shù)相加的例子,代碼如下圖:
調(diào)用后運(yùn)行結(jié)果如下圖:
定義sort函數(shù)時(shí)使用的參數(shù)是指針,需要注意的是這個(gè)指針是指向數(shù)組的,數(shù)組的名稱其實(shí)就是一個(gè)指針,所以p可以做sort的參數(shù)