|
論壇說明 |
歡迎您來到『史萊姆論壇』 ^___^ 您目前正以訪客的身份瀏覽本論壇,訪客所擁有的權限將受到限制,您可以瀏覽本論壇大部份的版區與文章,但您將無法參與任何討論或是使用私人訊息與其他會員交流。若您希望擁有完整的使用權限,請註冊成為我們的一份子,註冊的程序十分簡單、快速,而且最重要的是--註冊是完全免費的! 請點擊這裡:『註冊成為我們的一份子!』 |
|
主題工具 | 顯示模式 |
2004-06-20, 08:09 PM | #1 |
註冊會員
|
C語言的問題:如何指標改參考呼叫
/* prog 10-12,將a與b值互換(正確範例) */
#include <stdio.h> void swap(int *,int *); int main(void) { int a=3,b=5; printf("Before swap..."); printf("a=%d,b=%d\n",a,b); printf("After swap..."); swap(&a,&b); printf("a=%d,b=%d\n",a,b); return 0; } void swap(int *x,int *y) /* 將兩數互換 */ { int temp=*x; *x=*y; *y=temp; return; } 麻煩那位大大會的!幫我改一下~謝謝 |
送花文章: 96,
|
2004-06-20, 11:44 PM | #3 (permalink) |
註冊會員
|
是改成這樣嗎?
/* prog 10-12,將a與b值互換(正確範例) */
#include <stdio.h> void swap(int &, int & ); int main(void) { int a=3,b=5; printf("Before swap..."); printf("a=%d,b=%d\n",a,b); printf("After swap..."); swap(a,b); printf("a=%d,b=%d\n",a,b); return 0; } void swap(int &x, int &y) /* 將兩數互換 */ { int temp=x; x=y; y=temp; return; } |
送花文章: 96,
|
2004-06-21, 01:25 PM | #5 (permalink) |
管理版主
|
就如最後 8533667 所改的沒錯
這裡做一簡單解釋教學: 參考型態的引數 - call by reference: 函數呼叫 swap(i, j) 時, 引數的 傳遞 如同int &x=i; int &y=j;。 void swap(int &x, int &y) {} main() { int i,j; ... swap(i,j); ... } 解釋: i、x及j、y 是不同名但同體(x是i的別名);以 地址運算子 & 來 達到 call by reference 的功能 而第一樓 8533667 發表的是 位址呼叫(Call by address) 的引數呼叫 |
送花文章: 2012,
|
2004-06-22, 01:21 PM | #11 (permalink) |
|
哈哈,我剛好最近才看到另一個更妙的方法來SWAP兩個變數哦(而且不用使用第三個暫存變數)
要使用C/C++的Bitwise operator XOR let's say x = A, y = B x = x ^ y; y = x ^ y; x = x ^ y; http://www.cs.umd.edu/class/spring20...BitOp/xor.html http://www.if.uidaho.edu/~bgray/clas.../doc/swap.html 要暫停,可加入下面這行(在Windows下) system("PAUSE"); |
送花文章: 0,
|