#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 的記憶體位址 , 函式內宣告 指標 使用 * 取出該記憶體位址之值,相加後回傳.
沒有留言:
張貼留言