iT邦幫忙

2025 iThome 鐵人賽

DAY 6
0
自我挑戰組

C++入門即放棄系列 第 6

[DAY6]包裝好好玩!

  • 分享至 

  • xImage
  •  

為什麼要包裝程式碼?

  • 讓程式「模組化」,避免重複程式碼。
  • 讓程式更容易閱讀、維護與除錯
📌 #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)且不需改變原值 適合需要修改資料或傳遞大型物件(陣列、結構、類別)

結論

📌 函式的參數傳遞方式分為傳值與傳址

傳值會建立一份資料的複製品

因此在函式內修改並不會影響原始變數

傳址則是直接操作原始變數的記憶體位置

可以有效率地處理大型資料並允許修改原始內容

  • 不想動到原本資料 → 用傳值
  • 想修改原本資料 / 資料很大 → 用傳址

上一篇
[DAY5]我陷入了輪迴!
下一篇
[DAY7]小赤的程式冒險
系列文
C++入門即放棄8
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言