首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> 更多程式語言 >> 程式設計疑難解答

C 語言函數參數傳遞:& 取址與 * 解引用的區別與引用傳遞

     編輯:程式設計疑難解答

核心區別

符號名稱作用操作對象
&取址運算符獲取變數的記憶體地址普通變數
*解引用/間接訪問通過地址訪問/修改該地址存儲的值指標變數

函數參數場景

void func1(int *p) { *p = 10; }      // 接收指標,修改指向的值
void func2(int &ref) { ref = 10; }    // C++ 引用參數,直接修改實參 (C 無此語法)

int main() {
    int a = 5;
    func1(&a);  // 傳遞 a 的地址,a 變為 10
    // func2(a); // 僅 C++ 合法
}

指標層級遞進

  • int a → 變數
  • &a → int* (一級指標)
  • &&a → int** (二級指標,地址的地址)
  • *p → 取值 (若 p 為 int* 則得 int)

數據結構教材常見模式

  • 順序表結構體指標:void InitList(SqList *&L) (C++ 引用傳遞指標,可修改主調指標指向) 或 void InitList(SqList **L) (C 雙重指標)。
  • 鏈表節點指標:void Insert(Node *p, int val) (傳入節點指標,修改節點內容)。

參考資源

新浪博客詳細圖解:C/C++ 指標與引用深度解析

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved