首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> C語言 >> 關於C語言

C語言二級指標(雙指標)詳解與應用場景

     編輯:關於C語言

C語言二級指標(雙指標)詳解與應用場景

C 語言無引用機制,若需在函數內修改指針變量本身的值(即指向的地址),必須傳遞指針的指針——二級指標。C++ 可用引用替代。

為什麼需要二級指標?

嘗試用一級指標交換兩個整數變量的地址:

void swap(int *a, int *b) {
    int *tmp = a; a = b; b = tmp;   // 僅交換局部副本,外部無影響
}

參數傳遞本質是值傳遞,函數內修改的是副本,返回後原指針變量不變。

二級指標正確示例:動態分配內存並返回指針

void memorylocate(char **ptr) {
    *ptr = (char *)malloc(10 * sizeof(char));  // 修改實參指向的地址
}

int main() {
    char *buffer;
    memorylocate(&buffer);   // 傳遞一級指標的地址
    strcpy(buffer, "12345");
    printf("buffer %s\n", buffer);
    return 0;
}

char **ptr 接收 &buffer,解引用 *ptr 即可修改 buffer 本身的值。

其他應用場景

  • 函數需返回多個指針(如輸出參數為數組指針)。
  • 動態分配二維數組:int **arr = malloc(rows * sizeof(int*)),每行再 malloc。
  • 修改鏈表頭指針的操作(插入/刪除頭節點)。

總結:當「想改變指針的值」時,考慮二級指標。

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