指標的呼叫—交換兩個數值
一、子函式(被呼叫函式)的改變要想修改父函式(呼叫函式)的值需要:
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語言的人來說,不會犯上面的錯誤,會這麼寫交換函...