#include iostream
成都創(chuàng)新互聯(lián)是一家專業(yè)提供宛城企業(yè)網(wǎng)站建設(shè),專注與網(wǎng)站制作、成都網(wǎng)站建設(shè)、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為宛城眾多企業(yè)、政府機(jī)構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進(jìn)行中。
using namespace std;
//傳值調(diào)用
void chuanzhi(int a,int b)
{
int t=a;
a=b;
b=t;
cout"傳值調(diào)用函數(shù)里交換完后a,b值:";
couta" "bendl;
}
//指針傳遞
void zhizhen(int *a,int *b)
{
int t=*a;
*a=*b;
*b=t;
cout"指針傳遞函數(shù)里交換完后a,b值:";
cout*a" "*bendl;
}
//引用調(diào)用
void yinyong(int a,int b)
{
int t=a;
a=b;
b=t;
cout"引用調(diào)用函數(shù)里交換完后a,b值:";
couta" "bendl;
}
int main()
{
int x=2,y=4;
cout"傳值調(diào)用前:x=2,y=4"endl;
chuanzhi(x,y);
cout"傳值調(diào)用后:x="x",y="yendlendl;
x=2,y=4;
cout"指針傳遞前:x=2,y=4"endl;
zhizhen(x,y);
cout"指針傳遞后:x="x",y="yendlendl;
x=2,y=4;
cout"引用調(diào)用前:x=2,y=4"endl;
yinyong(x,y);
cout"引用調(diào)用后:x="x",y="yendlendl;
return 0;
}
寫的有點(diǎn)多 運(yùn)行完就 9 行
放在c++ 編譯器里 運(yùn)行下看看 就知道了
交換函數(shù)里面是肯定交換了,
而只有 指針傳遞和引用傳遞 才會(huì)對(duì)原來(lái)的變量值產(chǎn)生影響;
1、值傳遞,創(chuàng)建變量x和y,x的值等于a的值,y的值等于b的值
void Exchg1(int x, int y)?
{
int tmp;
tmp=x;
x=y;
y=tmp;
printf(“x=%d,y=%d/n”,x,y)
}
void main()
{
int a=4,b=6;
Exchg1 (a,b) ;
printf(“a=%d,b=%d/n”,a,b)
}
2、地址傳遞,相當(dāng)于建立了px和py兩個(gè)指向整型的指針,其值分別為a和b的地址
Exchg2(int *px, int *py)
{
int tmp=*px;
*px=*py;
*py=tmp;
print(“*px=%d,*py=%d/n”,*px,*py);
}
main()
{
int a=4;
int b=6;
Exchg2(a,b);
Print(“a=%d,b=%d/n”, a, b);
}
3、引用傳遞,x和y直接引用a和b,對(duì)a和b操作,相當(dāng)于給a、b起了別名x、y
Exchg2(int x, int y)
{
int tmp=x;
x=y;
y=tmp;
print(“x=%d,y=%d/n”,x,y);
}
main()
{
int a=4;
int b=6;
Exchg2(a,b);
Print(“a=%d,b=%d/n”, a, b);
}
擴(kuò)展資料:
printf用法:
printf()函數(shù)的調(diào)用格式為:printf("lt;格式化字符串gt;",lt;參量表gt;)。
其中格式化字符串包括兩部分內(nèi)容:一部分是正常字符,這些字符將按原樣輸出;另一部分是格式化規(guī)定字符,以"%"開始,后跟一個(gè)或幾個(gè)規(guī)定字符,用來(lái)確定輸出內(nèi)容格式。
參量表是需要輸出的一系列參數(shù),其個(gè)數(shù)必須與格式化字符串所說(shuō)明的輸出參數(shù)個(gè)數(shù)一樣多,各參數(shù)之間用","分開,且順序一一對(duì)應(yīng),否則將會(huì)出現(xiàn)意想不到的錯(cuò)誤。
比如:
int a=1234;
printf("a=%d\n",a);
輸出結(jié)果為a=1234。
區(qū)別:對(duì)形參的影響不同
1、在傳值中函數(shù)參數(shù)壓棧的是參數(shù)的副本,任何的修改是在副本上作用,沒(méi)有作用在原來(lái)的變量上。?
2、傳址中壓棧的是指針變量的副本,當(dāng)你對(duì)指針解指針操作時(shí),其值是指向原來(lái)的那個(gè)變量,所以對(duì)原來(lái)變量操作。?
擴(kuò)展資料
函數(shù)傳參有三種傳參方式:傳值、傳址、傳引用。
1、按值傳遞
(1)形參和實(shí)參各占一個(gè)獨(dú)立的存儲(chǔ)空間。
(2)形參的存儲(chǔ)空間是函數(shù)被調(diào)用時(shí)才分配的,調(diào)用開始,系統(tǒng)為形參開辟一個(gè)臨時(shí)的存儲(chǔ)區(qū),然后將各實(shí)參傳遞給形參,這是形參就得到了實(shí)參的值。
2、地址傳遞
地址傳遞與值傳遞的不同在于,它把實(shí)參的存儲(chǔ)地址傳送給形參,使得形參指針和實(shí)參指針指向同一塊地址。因此,被調(diào)用函數(shù)中對(duì)形參指針?biāo)赶虻牡刂分袃?nèi)容的任何改變都會(huì)影響到實(shí)參。
3、引用傳遞
引用傳遞是以引用為參數(shù),則既可以使得對(duì)形參的任何操作都能改變相應(yīng)數(shù)據(jù),又使函數(shù)調(diào)用方便。引用傳遞是在形參調(diào)用前加入引用運(yùn)算符“”。
引用為實(shí)參的別名,和實(shí)參是同一個(gè)變量,則他們的值也相同,該引用改變則它的實(shí)參也改變。