iT邦幫忙

2025 iThome 鐵人賽

DAY 13
0
自我挑戰組

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

[DAY13]我來幫你取名字!

  • 分享至 

  • xImage
  •  

引用(reference)

📌 引用就是變數的一個「別名」

就像幫變數取了另一個名字

  • int &ref = a;
  • refa 指向同一個值
#include <iostream>
using namespace std;
int main() 
{
    int a = 10;
    int &ref = a; 
    ref = 20;     
    cout << "a = " << a << endl;
    return 0;
}

const 與引用

📌 const 表示「常數」,不能被修改

搭配引用使用時,可以保護資料不被改動

  • const int &ref = a;
  • 避免函式裡誤改外部的變數
#include <iostream>
using namespace std;
void printa(const int &x) 
{
    cout << "a = " << x << endl;
}
int main() 
{
    int a = 30;
    printa(a); 
    return 0;
}

#define

  • 前處理器指令,編譯前會做「文字替換」
  • 不能指定型別
  • 不做編譯器檢查
#include <iostream>
using namespace std;
#define PI 3.14 
int main() 
{
    cout << PI << endl; 
    return 0;
}

COUNT

  • 有型別
  • 會做編譯檢查
  • 用在變數、指標、參數、函式回傳值等
#include <iostream>
using namespace std;
int main() 
{
    const double PI = 3.14; 
    cout << PI << endl;
    return 0;
}

#define和COUNT差異

#define const
類型檢查 沒有
範圍 全域 有作用域限制
複雜型別 不行 可以(int、double、struct…)
編譯檢查 不會報錯 編譯器會檢查

📌 #define 是前處理器巨集

編譯前就會直接進行文字替換

沒有型別與作用域概念

📌 const ,有型別檢查與作用域限制

結論

引用讓程式更直觀

因為它就像變數的別名

const 可以進一步保護資料

讓函式能安全地讀取變數

而不會誤修改


上一篇
[DAY12]傳送資料複製品!
系列文
C++入門即放棄13
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言