c語言 兩個值的交換

2021-08-18 09:59:07 字數 1049 閱讀 7496

指標的呼叫—交換兩個數值

一、子函式(被呼叫函式)的改變要想修改父函式(呼叫函式)的值需要:

1.傳指標

2.解引用

二、**的實現過程

錯誤一:

void swap(int a,int b)

int tmp;

tmp=a;

a=b;

b=tmp;

int main()

int a=10;

int b=20;

swap(a,b);

printf("%d,\n%d",a,b);

錯誤二:

void swap(int *p1,int *p2)

int main()

int a=10;

int b=20;

swap(&a,&b);

printf("%d,\n%d",a,b);

錯誤分析:這裡只進行了指標的傳遞,卻沒有解引用,也就是說指標p1與p2沒有得到所指的變數,只是得到了變數a與b的位址,所以沒有變換成功。

錯誤三:

void swap(int *p1,int *p2)

int main()

int a=10;

int b=20;

swap(&a,&b);

printf("%d,\n%d",a,b);

錯誤分析:這裡是進行了傳指標和解引用,但是swap函式中的tmp是個野指標(懸掛指標),也就是指標tmp沒有所指的變數。

正確的**:

void swap(int *p1,int *p2)

//傳指標;

int tmp=*p1;

*p1=*p2;

//解引用;

*p2=tmp;

int main()

int a=10;

int b=20;

swap(&a,&b);

printf("%d,%d",a,b);

C語言交換兩個變數的值

交換a,b變數的值,最簡單的方法,建立中間中間變數c,先把a的值存在c裡,然後把b的值放入a內,最後把c中的值賦給a,就完成了a,b變數值的交換。如下 include 利用中間變數交換兩個變數值 int main 如果不使用中間變數,我們可以利用異或運算來實現兩個變數值的交換。比如變數a 3,b 7...

c語言交換兩個變數的值

有兩個變數a 和b,想要交換它們的值 int a,b 能不能這樣操作呢?b a a b 不能啊,這樣操作的意思是把a的值放到b中,然後b中的值已經被覆蓋掉了,已經不是b原來的那個值了,所以是沒有意義的。ok,既然不能這樣操作,那怎麼辦?看一下問題出在 是不是b的值被覆蓋掉了,那麼可以先把b的值備份一...

C語言中交換兩個變數的值

在c語言中,要交換兩個變數的值,對於不同的人,可能會有不同的方法。對於初學者來說,可能是這樣。void swap int x,int y 但是,c語言中的函式呼叫採用的值傳遞,因此在主函式中呼叫該swap函式顯然無法交換兩個變數的值。當然,對於很多使用c語言的人來說,不會犯上面的錯誤,會這麼寫交換函...