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

C 語言指標陣列與二級指標 malloc 用法:動態配置字串陣列範例

     編輯:程式設計綜合問答

問題說明

在指標陣列中使用 malloc 時,不清楚 char *a[5] 與 char **p 的差異,以及為什麼 p 似乎不需要 malloc 就能運作。

說明

  • char *a[5] 是在棧上配置 5 個指標的陣列,不需要 malloc。
  • char **p 是二級指標,若要在堆上配置指標陣列,才需要 p = malloc(5 * sizeof(char*))。
  • 若 p = a,則 p 指向棧上的 a,不需要額外 malloc。
  • 二維數組與指標陣列的記憶體配置方式不同,前者連續,後者指標可分散。

範例

char *a[5];
char **p;
p = a; // p 現在指向棧上的 a,無需 malloc

// 若要在堆上配置:
p = (char**)malloc(5 * sizeof(char*));
for (int i = 0; i < 5; i++) {
    p[i] = (char*)malloc(20 * sizeof(char));
    gets(p[i]);
}
  1. 上一篇文章:
  2. 下一篇文章:
Java 基礎:在一個類別中撰寫兩個方法的標準結構 Android Tab 底部指示器滑動效果實現思路 CSS PC 正常移動端側邊留白?用 F12 響應式模式復現,檢查 viewport、box-sizing、溢出隱藏 CSS 內部樣式表定義詳解: