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

C語言動態數組實現:malloc 分配與釋放完整示例

     編輯:關於C語言

動態數組基本步驟

  1. 讀取用戶輸入的數組長度 len。
  2. 調用 malloc(sizeof(int) * len) 分配堆內存。
  3. 檢查返回指針是否為 NULL(分配失敗)。
  4. 使用下標或指針算術訪問元素。
  5. 使用完畢調用 free() 釋放內存(示例中省略,實際必須釋放)。

完整代碼

#include <stdio.h>
#include <stdlib.h> // 推薦用 stdlib.h 而非 malloc.h

int main(void) {
    int len;
    int *arr;

    printf("請輸入數組長度: ");
    if (scanf("%d", &len) != 1 || len <= 0) {
        fprintf(stderr, "無效長度\n");
        return 1;
    }

    arr = (int*)malloc(sizeof(int) * len);
    if (!arr) {
        fprintf(stderr, "內存分配失敗\n");
        return 1;
    }

    printf("請輸入 %d 個整數: ", len);
    for (int i = 0; i < len; i++) {
        if (scanf("%d", &arr[i]) != 1) {
            fprintf(stderr, "輸入錯誤\n");
            free(arr);
            return 1;
        }
    }

    printf("數組內容:\n");
    for (int j = 0; j < len; j++) {
        printf("%d:%d ", j, arr[j]);
    }
    putchar('\n');

    free(arr); // 釋放內存
    return 0;
}

編譯與運行

$ gcc -std=c99 dynamic_array.c -o dynarr
$ ./dynarr
請輸入數組長度: 5
請輸入 5 個整數: 1 2 3 4 5
數組內容:
0:1 1:2 2:3 3:4 4:5

進階提示

  • C99 支援變長數組 (VLA):int arr[len]; 分配在棧上,無需手動釋放,但大數組可能棧溢出。
  • 動態擴容可用 realloc 實現「動態數組」容器。
  • 嚴謹代碼必須檢查 malloc/realloc 返回值並配對 free。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved