本文前半部分與 ID 196003 內容高度重合,核心觀點已在前文系統闡述。此處補充後半部分關於參數傳遞與音樂力度符號的額外討論。
void func(int a) { a++; } // a 是拷貝
int main() { int b=1; func(b); printf("%d", b); // 1 }
形參佔用獨立棧空間,函數返回即銷毀,外部實參不受影響。
void func(int *a) { *a = 1989; }
int main() { int b=1; func(&b); printf("%d", b); // 1989 }
*a 訪問原對象內存。a 自身是局部的,函數結束銷毀,但指向的內存持久。void func(int &a) { a = 1989; } // a 與 b 共享同一內存地址
int main() { int b=1; func(b); printf("%d", b); // 1989 }
引用是變量的別名,編譯層面實現,無額外內存開銷,語法上像值傳遞,語義上是引用傳遞。
文末附錄的音樂術語與 C 概念無關,僅作筆記保存:
| 記號 | 全稱 | 中文 | 含義 |
|---|---|---|---|
| f | forte | 強 | 響亮 |
| p | piano | 弱 | 柔和 |
| mf | mezzo-forte | 中強 | 中等響亮 |
| mp | mezzo-piano | 中弱 | 中等柔和 |
| cresc / < | crescendo | 漸強 | 逐漸增強 |
| dim / > | diminuendo | 漸弱 | 逐漸減弱 |