c語言中怎麼用指標調換順序

2023-10-01 23:02:33 字數 5019 閱讀 8518

1樓:網友

* note:your choice is c ide */#include ""

main()

int pf;/*中間變數用於位址交換*/int a=1,b=2,c=3;

int *pa,*pb,*pc;

pa=&a;

pb=&b;

pc=&c;

printf("調換前:%d,%d,%d",*pa,*pb,*pc);

下面為位址交換*/

pf=pa;

pa=pc;

pc=pb;

pb=pf;

printf("調換後:%d,%d,%d",*pa,*pb,*pc);

2樓:

利用乙個臨時變數。

a=1b=2

c=3d=""

d=aa=b

b=cc=d

c語言中如何交換兩個指標變數的的值

3樓:小小歐平兒

1、首先,就是最基本的知識,寫標頭檔案、函式宣告、定義變數。

2、下面還需要定義指標,需要定義兩個指標p1和p2,然後把a的位址賦值給p1,把b的位址賦值給p2。

3、然後就是呼叫函式,該函式沒有返回值,就直接呼叫,但是引數進入的是a和b的位址,而不是a和b。

4、函式點用完之後,就是輸出a和b的值看一看是否互換了。

5、首先,a和b的位址傳給x和y,通過指標直接對a和b的值進行操作。

6、最後,就是調換*x和*y的值,這樣就是實現了a和b的值。

4樓:網友

交換兩個指標變數的的值有兩種不同的形式:

在指標定義所在函式交換兩個指標變數的值。

這種交換,與交換兩個整型變數的值方法相同,分三步:

先將pa儲存到臨時變數pt中,再將pb儲存到pa中,最後將pt儲存到pb中。

通過自定義函式進行交換兩個指標變數的值。

這種交換,必須要傳遞兩個指標變數的位址到自定義函式中(即函式的形參是二維指標),然後在函式中對收到的二維指標變數中的內容進行交換,即可實現實參的交換。

5樓:網友

定義乙個中間變數t(也是結構體型別的):

t=p1;p1=p2;

p2=t;就行了。

6樓:網友

定義乙個指標變數temp,*temp=*p1;*p1=*p2;*p2=*temp;

c語言用指標法交換兩個數的順序問題

7樓:網友

int swap(int *a,int *b)//a與b分別複製主函式x與y的值,即a與x的指向相同,b與y的指向相同 //通過交內。

換,a和y的指向相同,b與x的指向相同,但容是,x與y沒有改變原來指向,這樣函式swap結束,a與b消失,輸出結果不變 } 換成 int t; /將改變x和y指向的位址的值,達到交換目的。

8樓:

你試一試看如下的程式是否能夠正常交換兩。

個整數的數值。

void main( )

void swap( int * a, int * b ) 交換兩個整數的子函式,形參為指向整型的指標 */

9樓:夢迪

解答:1. 注意形式。

引數和實際引數的區別,主函式中的版x,y是實際引數,swap函式中的a,b是形式引數。權。

他們各有自己的儲存空間,互不干擾。

2. 在程式適當位置加上輸出位址的語句,即可看出為什麼回到主程式後,x,y的值為什麼不交換。

為了更形象,可以用圖表示它們的關係:

可見,交換的只是swap函式中的a,b值,對主函式中的a,b值沒有影響。

3. 修改的方法,將swap的交換變成值的交換。

10樓:谷歌地

swap只是。

bai把指標位址給交換了,但是du虛參是zhi不能改變實參的,看起dao來是把地內址交換了,但容實際上等同於沒換。

所以,並沒有改變指標位址裡存的內容。

#include//這是用函式呼叫的方法,為什麼這個方法為什麼就不能實現。

void swap(int *a,int *b)}void main()

11樓:

//分析如下:

x=&a;y=&b; /指標x指向變數a,指標y指向變數b

swap(x,y); 呼叫swap函式,實參x賦值給形參a, 實參y賦值給形參b,進入swap函式體。

在swap函式體中。

int swap(int *a,int *b)

/在swap函式體中,指標a指向main()函式的變數a, 指標b指向main()函式的變數b,/特別注意,實參x此時仍然指向變數a,實參y仍然指向變數b。

指標x,y和變數a,b存放在main()函式的棧區中,而指標a,b是在swap()函式的棧區中,/執行後,指標a指向了main()的變數b了,指標b指向了main()函式的變數a了。

這個指標交換語句,它只是改變了指標本身的值,也就是改變了指標的指向,而沒有改變指標。

所指向的記憶體空間的內容。當swap()函式執行完後,swap的棧區空間也就釋放了,那麼棧區里。

的區域性變數指標a,b,t的記憶體空間也就都不存在了。返回到main()函式繼續執行,此時main()函式。

裡的指標x,y仍然是x—>a,y—>b,所以執行printf("%d %d",*x,*y);語句,所以輸出的仍然還是。

a,b的值,沒有交換a,b的值。出現這種輸出結果的原因就是形參值的改變(也就是swap()函式的指標變數a,b)

並不會影響實參x,y的值。雖然你傳進去的是指標變數,是位址值,但是你沒有改變指標指向的變數。

的值,而只是改變了區域性指標變數本身的值,這跟值傳遞就沒什麼區別了。因此,swap函式需要做如下修改:

void swap(int *a, int *b)

這樣做就改變了區域性指標變數指向的變數的值,亦即交換兩個變數的值}

12樓:網友

函式呼叫的時候,傳copy遞給函式的實際是bai實參的乙個拷貝du

並不是原來指標本身,zhi所以你在函式內操dao作的都是備份的變數。如果想達到交換的目的,swap函式可以修改如下:

int swap(int *a,int *b)

13樓:網友

因為你的函式傳遞的是指標,在函式中指標中的內容修改可以返回到呼叫函式,但對指標的修改卻不能返回到呼叫函式,你可以使用int **a或者 int * pa;

14樓:網友

main函式。

bai中的。

swap(x,y),改為swap(&x,&y)int swap(int **a,int **b)}int swap(int *a,int *b)中的a和b是區域性的du你交換zhi的只是這個局dao部變數中的東西,要版用二級指標才可權以交換main函式中的x,y

15樓:網友

swap的a, b, 是swap的引數, 離開函式就不存在了。 因此交換a, b本身, 無意義。

在主程式中, 因為交換的是目標物件, 所以不會有問題。

16樓:手機使用者

#include

main()

void swap(int *a,int *b)//這樣才能專。

完全屬調換}

17樓:三天打魚

交換指標指向的變數值。

交換兩個指標。

18樓:

對**做了一點修改。只要執行一下看看效果,再看看注釋,應該就能有一些自己的理解了。

19樓:聽不清啊

#include///這是用函式。

呼叫的方法。

main()

int swap(int *a,int *b)//改了。

這樣就可內以實現了。

因為僅改變a,b的值是容不能夠影響到主函式的。

20樓:匿名使用者

你需要理解c語言中的「值傳遞」內。

#include

main()

void swap(int *a,int *b)

c語言用指標法交換兩個數的順序問題

21樓:閔真弭雅惠

swap只是把指標位址給交換了,但是虛參是不能改變實參的,看起來是把位址交換了,但實際上等同於沒換。

所以,並沒有改變指標位址裡存的內容。

#include//這是用函式呼叫的方法,為什麼這個方法為什麼就不能實現。

void swap(int *a,int *b)}void main()

22樓:董茜沈**

你試一試看如下的程式是否能夠正常交換兩個整數的數值void

main(void

swap(int*

a,int*b

*交換兩個整數的子函式,形參為指向整型的指標*/

c語言,指標,交換三個數的大小順序~~~~(>_<)~~~~

23樓:網友

親你這個程式中存在兩個錯誤。

1.給指標賦值的方式不對,a,b,c這三個指標並沒有進行初始化賦值,所以只能將變數的位址賦給它,將r的位址賦給指標,應改為。

a=&r;b=&s;

c=&t;函式裡面,應改為。

p=*x;x=*y;

24樓:網友

*a=r;

b=s;c=t;

改成:a=&r;b=&s;c=&t;

'是取值運算子,『&是取位址。

p=*x;x=*y;

y=*p;把p前面的'*'都去掉。

25樓:希伯來爵

野指標是不能進行*操作的。

有兩處錯誤。

a=&r;b=&s;c=&t;

void chan(int *x,int *y)//

C語言指標函式,c語言中指標怎麼使用?

應該是的,還可以用f a i 的形式。去程式設計嗎?我學這些的是一頭霧水。c語言中指標怎麼使用?1 使用場景 使用指標時,必須將它指向一個變數的地址或者為它分配 空間方能使用,如下所示 include include int main int argc,char const argv int b,d...

c語言中用指標的好處有哪些C語言中指標的作用是什麼?

指標非常的好,它把相同的事物歸類,然後把事物做出標記,避免給相同的特點做變數。比如說你和你同學,你們兩個人都有心臟 肝 肺等器官,如果命名心臟1 心臟2這樣比較麻煩,這時如果用上指標,指向你說心臟時說的是你的心臟,指向你同學時說的是你同學的心臟,如果人非常的多,你不用指標,那麼命名心臟1 2 3 4...

c語言中關於指向陣列的指標C語言中關於指向陣列的指標

char str 100 char pi str 相當於char pi pi str char ppi pi 這個地方抄錯了。應為char ppi pi 定義加 表明這是指標型別的變數 用的時候,就是用的指標,加 幹什麼。只有取指標所指變數的值,或給指標所指的變數賦值的等涉及指標所指的變數的時候,才...