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
}
Notealias
Reference
什麼是傳值call by value、傳址call by address、傳參考call by reference
[C++] Call by value、Call by pointer、Call by reference
沒有留言:
張貼留言