int swap(int a, int b) { int tmp = a; a = b; b = tmp; printf("%d, %d", &a, &b); // 2686752, 2686756 printf("%d, %d", a, b); // 20, 10 } int main() { int a, b; a = 10; b = 20; printf("%d, %d", &a, &b); // 2686788, 2686784 swap(a, b); printf("%d, %d", a, b); // 10, 20 }
Note
Just copy the value into swap function
Call by value of pointer
int swap(int *a, int *b) { int tmp = *a; *a = *b; *b = tmp; printf("%d, %d", &a, &b); // 2686752, 2686756 printf("%d, %d", a, b); // 2686788, 2686784 printf("%d, %d", *a, *b); // 20, 10 } int main() { int a, b; a = 10; b = 20; printf("%d, %d", &a, &b); // 2686788, 2686784 swap(&a, &b); printf("%d, %d", a, b); // 20, 10 }
Note:
Send the address of the value into swap function
Call by refrence
int swap(int &a, int &b) { int tmp = a; a = b; b = tmp; printf("%d, %d", &a, &b); // 2686788, 2686784 printf("%d, %d", *a, *b); // 20, 10 } int main() { int a, b; a = 10; b = 20; printf("%d, %d", &a, &b); // 2686788, 2686784 swap(a, b); printf("%d, %d", a, b); // 20, 10 }Note
alias
Reference
什麼是傳值call by value、傳址call by address、傳參考call by reference
[C++] Call by value、Call by pointer、Call by reference