分兩種,一種是按值傳遞,一種是按地址傳遞,
站在用戶的角度思考問題,與客戶深入溝通,找到撫順網(wǎng)站設(shè)計(jì)與撫順網(wǎng)站推廣的解決方案,憑借多年的經(jīng)驗(yàn),讓設(shè)計(jì)與互聯(lián)網(wǎng)技術(shù)結(jié)合,創(chuàng)造個性化、用戶體驗(yàn)好的作品,建站類型包括:成都網(wǎng)站制作、做網(wǎng)站、企業(yè)官網(wǎng)、英文網(wǎng)站、手機(jī)端網(wǎng)站、網(wǎng)站推廣、域名注冊、虛擬空間、企業(yè)郵箱。業(yè)務(wù)覆蓋撫順地區(qū)。
按值傳遞就是在子函數(shù)中開辟出一個臨時內(nèi)存空間,將傳遞的數(shù)值保存在這個空間中,當(dāng)子函數(shù)結(jié)束后,這個內(nèi)存空間就會釋放了!
按地址傳遞則是把主函數(shù)開辟的某個內(nèi)存空間首地址傳遞給子函數(shù),子函數(shù)可以直接讀寫主函數(shù)上這段內(nèi)存空間,當(dāng)子函數(shù)結(jié)束后,這部分空間不會被釋放,主函數(shù)將繼續(xù)使用這段空間!
當(dāng)傳遞的數(shù),不止一個的時候,或者要改變參數(shù)值得時候返回實(shí)參的值得時候。就用傳遞地址。
例如:
getct(int
*a,int
*b)
{
printf("%d
%d",*a,*b);
}
mian()
{
int
x=5,y=3;
int
*s,*z;
s=x;z=y;
getct(s,z);
}
按照規(guī)定做,就行了。
不用問為什么。
規(guī)則,都是人為規(guī)定的。
有時,就是胡亂定的,以后,再改版升級,就變了。
用不著深究。
C語言中函數(shù)的參數(shù)傳遞(值傳遞,地址傳遞,引用傳遞)
/* ^_^ 2015年11月3日09:58:03 辨析 C語言中函數(shù)的參數(shù)傳遞*/
//值傳遞 其實(shí)質(zhì)是將數(shù)值傳遞給其他倆個變量,自己變量里面的值并沒有改變----所以說是值傳遞。
# include stdio.h
void exchange();
int main (void)
{
int x,y;
x=3;
y=4;
exchange(x,y); //這就是典型的值傳遞,它把X,Y的值傳遞給變a和b;
printf("%d %d\n",x,y); //a,b的值進(jìn)行交換,但是變量X,Y里面的值并沒有交換。
return 0;
}
void exchange(int a,int b)
{
int temp;
temp =a;
a=b;
b=temp;
printf("%d %d\n",a,b);
}
//地址傳遞 (提到地址二字,應(yīng)該始終明確,C語言中的地址是基于指針的,所以地址傳遞是一定會用指針的)
# include stdio.h
void exchange();
int main (void)
{
int x,y;
x=3;
y=4;
exchange(x,y); //這就是典型的地址傳遞,它把X,Y變量地址傳遞給指針a和b;
printf("%d %d\n",x,y); //*a,*b的值進(jìn)行交換,就是找到a,b對應(yīng)的地址交換地址里面的值,其實(shí)也就是
//找到 a,b值進(jìn)行交換。
return 0;
}
void exchange(int *a,int*b)
{
int temp;
temp =*a;
*a=*b;
*b=temp;
printf("%d %d\n",*a,*b);
}
輸出:
調(diào)用函數(shù)前輸出結(jié)果:
nums[1]=0
nums[2]=0
nums[3]=0
nums[4]=0
value = 0
因?yàn)檠h(huán)變量初值是1,所以nums[0]不會輸出
findMax(nums,value); //調(diào)用findMax,vals指向nums開始元素,m=0
i=1;[i=1],iMAXELS成立,開始循環(huán),vals[i]=1,nums[0,1,0,0,0],輸出:vals[1]=1
i++;[i=2],iMAXELS成立,繼續(xù)循環(huán),vals[i]=1,nums[0,1,1,0,0],輸出:vals[2]=1
i++;[i=3],i5成立,繼續(xù)循環(huán),vals[i]=1,nums[0,1,1,1,0],輸出:vals[3]=1
i++;[i=4],i5成立,繼續(xù)循環(huán),vals[i]=1,nums[0,1,1,1,1],輸出:vals[4]=1
i++;[i=5],i5不成立,結(jié)束循環(huán),輸出:m=1
函數(shù)返回,m被舍棄,輸出:
調(diào)用函數(shù)后輸出結(jié)果:
nums[1]=1
nums[2]=1
nums[3]=1
nums[4]=1
value = 0
由于子程序中沒有計(jì)算過m,所以m值一直是初始的1,這個m是函數(shù)自己臨時定義的變量,用來接收調(diào)用者傳進(jìn)來的參數(shù),main函數(shù)將vale的值0傳遞給m,計(jì)算完后,函數(shù)返回,m被舍棄,不會影響value的值(作為參數(shù),是取value的值來用一下,然后就沒有value的事了)
如果想將m的值返回,那么有兩種辦法:
函數(shù)寫成:void findMax(int vals[],int *m),然后函數(shù)中用到m的地方都改成*m,調(diào)用時findMax(nums,value);
函數(shù)寫成:int findMax(int vals[],int m),函數(shù)最后寫return m;調(diào)用時value=findMax(nums,value);
如果子程序不需要value作為m的初始值,則可省略第2個參數(shù):int findMax(int vals[]),調(diào)用:value=findMax(nums);
C語言在形參和實(shí)參之間傳遞的不僅是值傳遞,也包括地址傳遞的。
細(xì)節(jié)如下:
C語言函數(shù)參數(shù)傳遞包括按值傳遞和按地址傳遞兩種;
當(dāng)形式參數(shù)是數(shù)組、指針時都是使用的按地址傳遞。
本文題目:c語言中函數(shù)參數(shù)傳地址,c語言函數(shù)參數(shù)
網(wǎng)頁地址:http://jinyejixie.com/article30/hsispo.html
成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供移動網(wǎng)站建設(shè)、靜態(tài)網(wǎng)站、搜索引擎優(yōu)化、網(wǎng)站制作、全網(wǎng)營銷推廣、網(wǎng)頁設(shè)計(jì)公司
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)