📌 #include <iostream>
using namespace std;
int add(int a,int b)
{
return a + b;
}
int main()
{
int A=5;
int B=4;
cout << add(A,B) << endl;
int B=3;
cout << add(A,B) << endl;
return 0;
}
📌 當成是需要重複動作的時候
📌 可呼叫設計好的函式做使用
📌int sub(int a,int b)
{
return a - b;
}
📌 回傳型別 函式名稱(參數)
📌void sub(int a)
{
a = a + 1;
}
📌 void → 值無法回傳,適合輸出使用
📌int sub(int a,int b)
{
return a - b;
}
📌 int → 值可回傳,透過 return 回傳
📌#include <iostream>
using namespace std;
void add(int* x)
{
*x = *x + 1;
}
int main()
{
int a = 5;
add(&a);
cout << a << endl;
return 0;
}
📌 因為傳送的是位置,所以函式裡面的x,和a是同記憶體位置的
📌 所以當函式裡面x的值改變,main的a值,也會對應改變
傳值 | 傳址 | |
---|---|---|
傳遞內容 | 傳遞變數的「複製品」 | 傳遞變數的「位址」 |
影響原變數 | 不會改變 | 會改變 |
記憶體效率 | 需要額外複製,對大物件較低效 | 不需額外複製,對大物件較高效 |
場合 | 適合小型資料(int、double)且不需改變原值 | 適合需要修改資料或傳遞大型物件(陣列、結構、類別) |
📌 函式的參數傳遞方式分為傳值與傳址
傳值會建立一份資料的複製品
因此在函式內修改並不會影響原始變數
傳址則是直接操作原始變數的記憶體位置
可以有效率地處理大型資料並允許修改原始內容