欧美一区二区三区老妇人-欧美做爰猛烈大尺度电-99久久夜色精品国产亚洲a-亚洲福利视频一区二区

c語言中交換函數(shù)用指針嗎 c語言中的交換函數(shù)

C語言 寫一個函數(shù)交換兩個數(shù)的值,為什么一定要用指針?

運用代碼解釋指針運用的理解如下:

成都創(chuàng)新互聯(lián)公司是一家專業(yè)提供遷西企業(yè)網(wǎng)站建設(shè),專注與成都網(wǎng)站制作、做網(wǎng)站、H5高端網(wǎng)站建設(shè)、小程序制作等業(yè)務(wù)。10年已為遷西眾多企業(yè)、政府機構(gòu)等服務(wù)。創(chuàng)新互聯(lián)專業(yè)網(wǎng)絡(luò)公司優(yōu)惠進行中。

#includeiostream

using namespace std;

int fun1 (int a,int b)

{

int c;

c=a;a=b;b=c;

cout"a1:"a";b1:"bendl;

}

int fun2 (int *a,int *b)

{

int *c;

c=a;a=b;b=c;

cout"a2:"*a";b2:"*bendl;

}

int fun3(int *a,int *b)

{

int *c;

c=*a;*a=*b;*b=c;

cout"a3:"*a";b3:"*bendl;

}

int fun4 (int *a,int *b)

{

int c;

c=*a;*a=*b;*b=c;

cout"a4:"*a";b4:"*bendl;

}

int fun5 (int a,int b)

{

int c;

c=a;a=b;b=c;

cout"a5:"a";b5:"bendl;

}

int main()

{

int aa=1,bb=2;

fun1(aa,bb);

cout"aa1:"aa";bb1:"bbendl;

fun2(aa,bb);

cout"aa2:"aa";bb2:"bbendl;

fun3(aa,bb);

cout"aa3:"aa";bb3:"bbendl;

fun4(aa,bb);

cout"aa4:"aa";bb4:"bbendl;

aa=1,bb=2;

fun5(aa,bb);

cout"aa5:"aa";bb5:"bbendl;

return 0;

}

輸出結(jié)果為:

a1:2;b1:1

aa1:1;bb1:2

a2:2;b2:1

aa2:1;bb2:2

aa3:1;bb3:2

a4:2;b4:1

aa4:2;bb4:1

a5:2;b5:1

aa5:2;bb5:1

main中調(diào)用fun1()時,將實參a,b的值傳遞給了交換函數(shù),如果此時在swap1中打印,可以看到結(jié)果是正確的,但是該過程其實是將aa和bb分別復(fù)制了一份給了函數(shù),執(zhí)行完fun1()之后,aa和bb的值沒有任何變化。

fun2(),看似的確使用了指針,但還是失敗,因為這里是將aa和bb的地址給交換了,而并沒有交換aa和bb的值。在這里由于未給c賦值,c中并沒有確定的值,c中的值是不可預(yù)見的。此時c可能指向一個未知的存儲單元。

而嚴(yán)重的情況是,該單元的數(shù)據(jù)可能是有用的,因此fun2()不但沒有實現(xiàn)兩個數(shù)的交換,反而給系統(tǒng)的穩(wěn)定性帶來威脅。

fun3(),將int賦值給int *,編譯錯誤。

fun4()是正確的。為了在函數(shù)中改變了的變量能被其它函數(shù)調(diào)用,正確的辦法是用指針變量作為函數(shù)參數(shù),在函數(shù)執(zhí)行過程中使指針變量所指向的變量值發(fā)生變化。

函數(shù)調(diào)用結(jié)束后,哲別變量值的變化依然保留下來,這樣就實現(xiàn)了通過函數(shù)調(diào)用是變量的值發(fā)生變化,在其它函數(shù)中可以使用這些改變了的值的目的。

fun5()也是正確的,這是引用的重要應(yīng)用之一。對于引用的操作實際上是作用在引用所因的對象上。

擴展資料

在函數(shù)中的參數(shù),并不是調(diào)用者的變量,而是臨時申請的變量a和b存放main函數(shù)中變量a和b的值,并在函數(shù)中用來計算,在fun中給a和b賦值都是在操作這兩個臨時申請的變量,函數(shù)返回后,這兩個變量被舍棄,函數(shù)調(diào)用也沒有將這兩個臨時變量的值返回給main函數(shù)中調(diào)用使用的參數(shù)功能。

所以,在函數(shù)中要操作調(diào)用者申請的變量,需要給出它們的指針,函數(shù)中用指針來找到這些變量的位置和內(nèi)容。

關(guān)于C語言交換兩個數(shù)(有關(guān)指針)

在C語言中,通過函數(shù)參數(shù)傳遞,進行兩個數(shù)的交換,必須采用傳遞指針的方式,同時,在函數(shù)中,一定要對兩個指針中的數(shù)據(jù)內(nèi)容進行交換才能達到交換實參地址中數(shù)據(jù)的目的。

如:

//正確的交換函數(shù)

void?swap1(int?*p1,int?*p2)

{

int?p;

p=*p1;?//通過*引用地址中的數(shù)據(jù),進行交換

*p1=*p2;

*p2=p;

}

//錯誤的交換函數(shù)

void?swap2(int?*p1,int?*p2)

{

int?*p;?

p=p1;?//這里進行改變的是形參的值,而形參只是實參的一個副本,形參本身的變化,是不能改變實參的值的??!?

p1=p2;

p2=p;

}

PS:要正確認(rèn)識C語言中的實參與形參,形參在使用中只是實參的副本,若形參是指針,我們可以通過形參改變實參地址中的內(nèi)容,但無法改變實參本身的值!

C語言調(diào)用函數(shù)互換ab,為什么要用指針。不用指針能行嗎?注意,是調(diào)用函數(shù)。

這是 C 語言 本身 特性 規(guī)定了 的。你只要記住 這點: 形參 必須用指針,這樣才能把 通過 函數(shù)加工 后的 數(shù)值 帶回來。通過函數(shù) 互換后 的a,b,才能被帶回。

至于“為什么”,可以不去追究,它的理由 無非 是什么 地址啦,值啦之類,時間長了,自己會記混淆。

其它語言,例如 fortran 語言,不管形參是什么花樣,都能帶回。

c語言中兩個數(shù)交換值,為什么要用指針

假設(shè)pa原本指向內(nèi)存單元a,

pb原本指向內(nèi)存單元b,

自然而然,交換之后pa指向內(nèi)存單元b,

pb指向內(nèi)存單元a,

那么pa對應(yīng)的值就變成了b原來的值,

pb對應(yīng)的值也就變成了a原來的值,

用函數(shù)交換兩個數(shù)的值,必須要指針嗎

不用指針了可以啊,例如交換a和b的值(前提不溢出)

a +=b;

b=a-b;

a=a-b;

如果你問為什么swap(int a,int b)無法交換,這是因為實參是形參的拷貝。想象有一個對手下非常不信任的老板,他的手上的文件是形參,手下的實際操作的文件都是從他手上復(fù)印的,因此可以理解成實參。無論手下如何努力修改復(fù)印的文件,都不可以改變老板文件內(nèi)容。如果老板說“把柜子的那個文件改一下”,手下就可以改了。因為他告訴真幰實文件的地址,手下可以修改真幰實文件。指針就是這個地址

C語言中交換兩個數(shù)為什么一定要用指針和調(diào)用函數(shù)?

我剛?cè)腴T的時候也是這樣想的,哈哈。

但是隨著你學(xué)的深入,你會知道指針才是c語言的靈魂。

用函數(shù)交換變量,如果不用指針的話,是無法進行的,因為函數(shù)只能改變形參,而對于主函數(shù)的實參,是沒有交換作用的(這里得好好想想,初學(xué)可能會糊涂的點就在這)

指針的作用很多的,下面是我上課做的一些筆記,你可以看看。

有什么問題再追問我哦~

指針的重要性

表示一些復(fù)雜的數(shù)據(jù)結(jié)構(gòu)

快速的傳遞數(shù)據(jù),減少內(nèi)存的耗用

使函數(shù)返回一個以上的值

能直接訪問硬件

能夠方便地處理字符串

是理解面向?qū)ο笳Z言中引用的基礎(chǔ)

總結(jié):指針是c語言的靈魂

當(dāng)前題目:c語言中交換函數(shù)用指針嗎 c語言中的交換函數(shù)
標(biāo)題來源:http://chinadenli.net/article10/hpisgo.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供商城網(wǎng)站、云服務(wù)器、域名注冊、外貿(mào)建站網(wǎng)站制作、品牌網(wǎng)站設(shè)計

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)

小程序開發(fā)