2012年11月5日

C++ Call by value 簡單範例

#include <iostream>

using namespace std;

int Add(int x,int y);
int Add1(int *x,int *y);
void NumberChange(int x,int y);
int main()
{
        int a=0;
        int b=0;   
        a=50;
        b=50;
        cout<<"a="<<a<<endl;
    cout<<"b="<<b<<endl;
    cout<<"50+50= "<<Add(a,b)<<endl;
        NumberChange(a,b);
    cout<<"改變後 a="<<a<<endl;
    cout<<"改變後 b="<<b<<endl;
        cout<<"50+50= "<<Add1(&a,&b)<<endl;
        system("Pause");
}

int Add(int x,int y)
{
        return x+y;
}

int Add1(int *x,int *y)
{
        return *x+*y;
}

void NumberChange(int x,int y)
{
        x=10;
        y=20;
}


一開始變數宣告為a=50 b=50, 參數傳入Add(int x,int y) 之後 x與y為複製a b 在函式內宣告的參數

所以 x 與 y 的記憶體位置與 a b 不為相同 (不同份,相同值),所以使用 NumberChange(int x,int y)

改變 x y 值時 並不會更動到 a b 的值 (因為存在於不同的記憶體位址). 而也可以使用記憶體位址的方式傳值

Add1(&a,&b)

Add1 傳入 a 與 b 的記憶體位址 , 函式內宣告 指標 使用 * 取出該記憶體位址之值,相加後回傳.


沒有留言:

張貼留言