其主要的意思, 參數以數值方式傳遞, 將一個變數的值, 帶入到副程式當中使用
範例如下:
void call_by_value(int value)
{
int a;
a = value
print("call by value a=%d\n", a);
}
int main()
{
int a=10;
call_by_value(a);
return 0;
}
================== call by address =====================
參數以記憶體位址的方式傳遞, 帶入到副程式中使用, 此帶入的變數也會在副程式的運算當中被更動.
範例如下:
void call_by_address_swap(int *a, int *b)
{
int c;
c=*a;
*a=*b;
*b=c;
}
int main()
{
int value1=5;
int value2=10;
printf("before swap: value1=%d, value2=%d\n", value1, value2);
call_by_address_swap(&value1, &value2);
printf("after swap: value1=%d, value2=%d\n", value1, value2);
return 0;
}
=================== call by reference ====================
將參數以數值的方式傳遞到呼叫此參數的副程式,副程式需要有一個參考來接收這個參數,這是只有C++才有的,C是沒有的
範例如下:
{
int c;
c=a;
a=b;
b=c;
}
int main()
{
int value1=5;
int value2=10;
printf("before swap: value1=%d, value2=%d\n", value1, value2);
call_by_reference_swap(value1, value2);
printf("after swap: value1=%d, value2=%d\n", value1, value2);
return 0;
}
沒有留言:
張貼留言