有兩種方法可以將值或數據傳遞給C++語言的函數:通過值調用和通過引用調用。 原始值在值調用中不會被修改,但通過引用調用中會被修改。
下麵來理解在C++語言中的通過值調用和通過引用調用。
在C++中通過值調用
在值調用中,不修改原始值。
在值調用中,傳遞給函數的值由函數參數本地存儲在堆疊記憶體位置。 如果更改函數參數的值,則僅更改當前函數的值,函數內修改的參數值不會反映到函數的外部。 它不會改變調用方法中的變數的值,如:main()函數。
下麵我們通過下麵的例子來嘗試理解C++語言中的按值調用的概念:
#include <iostream>
using namespace std;
void change(int data);
int main()
{
int data = 3;
change(data);
cout << "Value of the data is: " << data<< endl;
return 0;
}
void change(int data)
{
data = 5;
}
執行上面代碼,得到以下結果 -
Value of the data is: 3
在C++中通過引用調用
在引用調用中,原始值會被修改,因為我們是通過引用(地址)來調用的。
這裏,值的地址在函數中傳遞,因此實際和形式參數共用相同的地址空間。 因此,在函數內部改變的值會反映在函數內部以及外部。
注意:要理解通過引用調用,您必須具有指針的基本知識。
通過下麵的例子來嘗試理解C++語言中的引用的概念:
#include<iostream>
using namespace std;
void swap(int *x, int *y)
{
int swap;
swap=*x;
*x=*y;
*y=swap;
}
int main()
{
int x=500, y=100;
swap(&x, &y); // passing value to function
cout<<"Value of x is: "<<x<<endl;
cout<<"Value of y is: "<<y<<endl;
return 0;
}
執行上面代碼,得到以下結果 -
Value of x is: 100
Value of y is: 500
在C++中通過值調用和通過引用調用的區別
序號 | 通過值調用 | 通過引用調用 |
---|---|---|
1 | 將值的副本傳遞給函數 | 將值的地址傳遞給函數 |
2 | 在函數內部進行的更改不會反映在函數外部 | 在函數內部進行的更改也反映在函數外部 |
3 | 實際和形式參數將在不同的記憶體位置創建 | 實際和形式參數將在同一記憶體位置創建 |
以下是糾正/補充內容:
你這寫的是指針吧,不是引用#includeusing namespace stdvoid swapint &x int &y{int tmptmp = xx = yy = tmp}int mainint argc const char *argv[]{int a = 2int b = 5swapa bcout<< "a=" << a < 提交時間:2019-08-31