正確的
為普陀等地區(qū)用戶提供了全套網(wǎng)頁(yè)設(shè)計(jì)制作服務(wù),及普陀網(wǎng)站建設(shè)行業(yè)解決方案。主營(yíng)業(yè)務(wù)為網(wǎng)站設(shè)計(jì)制作、成都網(wǎng)站設(shè)計(jì)、普陀網(wǎng)站設(shè)計(jì),以傳統(tǒng)方式定制建設(shè)網(wǎng)站,并提供域名空間備案等一條龍服務(wù),秉承以專業(yè)、用心的態(tài)度為用戶提供真誠(chéng)的服務(wù)。我們深信只要達(dá)到每一位用戶的要求,就會(huì)得到認(rèn)可,從而選擇與我們長(zhǎng)期合作。這樣,我們也可以走得更遠(yuǎn)!
B
例如:
f(int data[]);
f(int *data);
其實(shí)是等價(jià)的,都是一個(gè)指針傳遞。上面兩種無(wú)論那種都可以傳遞一個(gè)數(shù)組名,作為實(shí)參。
實(shí)參傳遞給的數(shù)組名,就是數(shù)組的首地址。
因此通過(guò)數(shù)組名,傳遞其實(shí)就是把數(shù)組的首地址給了形參,因此通過(guò)地址就可以改變實(shí)參數(shù)組相應(yīng)的值。
C語(yǔ)言中數(shù)組名作為實(shí)參傳給被調(diào)用的函數(shù)時(shí),形參獲得的是數(shù)組的起始地址。
還是用例子說(shuō)話吧。
#includestdio.h
int *arry(int *a)
{
int *b;
b = a;
int i;
for(i=0;i5;i++)
{
printf("%d",a[i]);
} return b;
}
int main()
{
int a[5] = {1,2,3,4,5};
int *c;
int i;
c = arry(a);
for(i=0;i5;i++)
{
printf("%d",c[i]);
}
}
主要是通過(guò)指針把數(shù)組,例如main里面的a的地址傳入arry函數(shù),然后在arry函數(shù)中用一個(gè)兼容類(lèi)型的指針接收地址,然后就可以再這個(gè)指針下的地址操作地址上面的數(shù)據(jù)了。
arry返回的時(shí)候也是返回一個(gè)指針(地址)。
這里的 ?if(max(m,a[i])m) ?規(guī)范寫(xiě)法后面那個(gè)分號(hào)應(yīng)該去掉的
這個(gè)程序求的是輸入的是個(gè)int類(lèi)型數(shù)字的最大值,m = a[0]是把第一個(gè)數(shù)的值賦給變量m,然后拿第二個(gè)跟它對(duì)比,if(max(m,a[i])m)這句里面的max(m,a[i])是對(duì)比m與它的下一個(gè)數(shù)的大小,max(m,a[i])m則是把調(diào)用函數(shù)返回的值跟原來(lái)的m作比較,如果符合max(m,a[i])m的條件,m = max(m,a[i])就把調(diào)用函數(shù)返回的值賦給m,n = i ? “i”是當(dāng)前最大的那個(gè)數(shù)的在數(shù)組中的位置。
只是大于零是不行的,因?yàn)檫@里要求最大的那個(gè)數(shù),你輸入的數(shù)字肯定全部大于或等于零的,如果改成if(max(m,a[i])0)是一個(gè)接著一個(gè)作比較,n = i要執(zhí)行10次,也是可以得到正確答案,但是這會(huì)增大系統(tǒng)開(kāi)銷(xiāo);如果是if(max(m,a[i])m)這樣,那么最大的數(shù)在第幾位,n = i就執(zhí)行多少次,總的執(zhí)行次數(shù)小于等于10.安效率來(lái)算后者較可觀。時(shí)間復(fù)雜度較低。
在C語(yǔ)言中,用數(shù)組名作為函數(shù)調(diào)用時(shí)的實(shí)參,實(shí)際上傳遞給形參的是首地址。
因?yàn)閿?shù)組名傳遞的是數(shù)組的地址也就是第一個(gè)元素的地址。例如:
a[3]這個(gè)數(shù)組,3指?jìng)€(gè)數(shù),a[0]指第一個(gè)元素,全部元素指a[0]~a[2];那數(shù)組名a規(guī)定的就是首地址。
擴(kuò)展資料
C語(yǔ)言中函數(shù)參數(shù)傳遞的三種方式:
1、傳值,就是把你的變量的值傳遞給函數(shù)的形式參數(shù),實(shí)際就是用變量的值來(lái)新生成一個(gè)形式參數(shù),因而在函數(shù)里對(duì)形參的改變不會(huì)影響到函數(shù)外的變量的值。
2、傳地址,就是傳變量的地址賦給函數(shù)里形式參數(shù)的指針,使指針指向真實(shí)的變量的地址,因?yàn)閷?duì)指針?biāo)傅刂返膬?nèi)容的改變能反映到函數(shù)外,也就是能改變函數(shù)外的變量的值。
3、傳引用,實(shí)際是通過(guò)指針來(lái)實(shí)現(xiàn)的,能達(dá)到使用的效果如傳址,可是使用方式如傳值。說(shuō)幾點(diǎn)建議:如果傳值的話,會(huì)生成新的對(duì)象,花費(fèi)時(shí)間和空間,而在退出函數(shù)的時(shí)候,又會(huì)銷(xiāo)毀該對(duì)象,花費(fèi)時(shí)間和空間。